У меня есть std :: string и я хочу, чтобы первая буква была заглавной, а остальные строчные.
Один из способов сделать это:
const std::string example("eXamPLe");
std::string capitalized = boost::to_lower_copy(example);
capitalized[0] = toupper(capitalized[0]);
Который даст capitalized
как:
«Пример»
Но, возможно, есть более прямой способ сделать это?
Если строка действительно просто одно слово, std::string capitalized = boost::locale::to_title (example)
должен сделать это. В противном случае то, что у вас есть, довольно компактно.
Изменить: только что заметил, что boost::python
Пространство имен имеет str
класс с capitalize()
метод, который звучит так, как будто он будет работать для строк из нескольких слов (при условии, что вы хотите то, что вы описали, а не регистр заголовка). Однако использование строки Python только для получения этой функциональности, вероятно, плохая идея.
Других решений пока нет …