如何在C ++字符串中大写单词?

时间:2013-03-12 19:03:06

标签: c++ boost stdstring capitalize

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

我能做到的一种方法是:

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

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

哪会产生capitalized

  

“实施例”

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

3 个答案:

答案 0 :(得分:3)

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

编辑:只是注意到boost::python命名空间有一个str类,其中capitalize()方法听起来像是适用于多字符串(假设你想要你所描述的而不是标题案例)。但是,使用python字符串来获取该功能可能是一个坏主意。

答案 1 :(得分:0)

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

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

cout << example << endl;

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

答案 2 :(得分: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";
}