boost — Как сделать заглавными буквами слово в строке C ++?

У меня есть std :: string и я хочу, чтобы первая буква была заглавной, а остальные строчные.

Один из способов сделать это:

const std::string example("eXamPLe");
std::string capitalized = boost::to_lower_copy(example);

capitalized[0] = toupper(capitalized[0]);

Который даст capitalized как:

«Пример»

Но, возможно, есть более прямой способ сделать это?

2

Решение

Если строка действительно просто одно слово, std::string capitalized = boost::locale::to_title (example) должен сделать это. В противном случае то, что у вас есть, довольно компактно.

Изменить: только что заметил, что boost::python Пространство имен имеет str класс с capitalize() метод, который звучит так, как будто он будет работать для строк из нескольких слов (при условии, что вы хотите то, что вы описали, а не регистр заголовка). Однако использование строки Python только для получения этой функциональности, вероятно, плохая идея.

3

Другие решения

Других решений пока нет …