首页 > 解决方案 > 如何大写和标题字符串

问题描述

如果给我一个字符串,我需要大写标题字符串。例如:

标签: c++string

解决方案


您的代码存在一些问题。这是您的代码的修改版本,可以正常工作。这里:

std::string Capitalize(const std::string &str) {
std::string Ret;
for (int i = 0; i < str.length(); i++){
    char c = str[i];
    if (i == 0){
        Ret += toupper(c);
    }
    else if (i != 0){
        Ret += (tolower(c));
    }
}
return Ret;}

for 循环中的条件需要是 str.length() 而不是 Ret.length() 并且这里:

std::string Title(const std::string &str) {
std::string Ret;
int i=0;
for (int i=0;i<str.size();i++) {
    if(!(i==0 && str[i]==' '))
        Ret += tolower(str[i]);
}

int size = Ret.length();
for (int i = 0; i < size; i++) {
    if (i==0  || Ret[i - 1] == ' ')
    {
        Ret[i] = toupper(Ret[i]);
    }
}
return Ret;}

检查 i 是否为 0 以防止超出范围访问字符串。


推荐阅读