5

我有一个 std::string 并希望第一个字母大写,其余小写。

我可以这样做的一种方法是:

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

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

这将产生capitalized

“例子”

但也许有更直接的方法可以做到这一点?

4

3 回答 3

6

如果字符串确实只是一个单词,std::string capitalized = boost::locale::to_title (example)应该这样做。否则,您所拥有的将非常紧凑。

编辑:刚刚注意到boost::python命名空间有一个str类,它的capitalize()方法听起来像是适用于多字串(假设你想要你所描述的而不是标题大小写)。然而,仅仅为了获得该功能而使用 python 字符串可能不是一个好主意。

于 2013-03-12T19:23:36.270 回答
0

我认为字符串变量名称是示例,其中存储的字符串是“示例”。 所以试试这个:

example[0] = toupper(example[0]);
for(int i=1 ; example[i] != '\0' ; ++i){
        example[i] = tolower(example[i]);
        }

cout << example << endl;

这可能会给您第一个字符大写,而字符串的其余部分变为小写。它与原始解决方案没有太大不同,只是一种不同的方法。

于 2020-07-13T20:05:50.337 回答
0

无升压的解决方案是:

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
    const std::string example("eXamPLe");

    std::string s = example;    
    s[0] = toupper(s[0]);
    std::transform(s.begin()+1, s.end(), s.begin()+1, tolower);
    
    std::cout << s << "\n";
}
于 2020-07-13T21:55:09.687 回答