我有一个std :: string,希望第一个字母大写,其余小写。
我能做到的一种方法是:
const std::string example("eXamPLe");
std::string capitalized = boost::to_lower_copy(example);
capitalized[0] = toupper(capitalized[0]);
哪会产生capitalized
:
“实施例”
但也许有更直接的方法来做到这一点?
答案 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";
}