C++ Isupper/tolower不';行不通

C++ Isupper/tolower不';行不通,c++,C++,问题是,我的程序不会将大写字母更改为小写字母。我想不出为什么它没有 #include <iostream> #include <ctype.h> using namespace std; int main(){ string str="hEhEhehe"; for(int i=0;i<str.size();i++){ if(isupper(str.at(i))) tolower(str.at(i));

问题是,我的程序不会将大写字母更改为小写字母。我想不出为什么它没有

#include <iostream>
#include <ctype.h>

using namespace std;

int main(){
    string str="hEhEhehe";
    for(int i=0;i<str.size();i++){
        if(isupper(str.at(i)))
            tolower(str.at(i));
    }
    cout << str;
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
string str=“嘿嘿”;

对于(inti=0;i,需要将值赋回字符串的索引

if(isupper(str.at(i)))
        str[i] = tolower(str.at(i));

查看
tolower
的返回值。它不会对字符进行变异,而是返回小写字符。字符是不可变的。它必须返回一个新字符。顺便说一句。您可能会注意到,您正在逐个值传递该字符,因此如果不通过点传递,则无法在函数中更改它呃,希望上面的字符是ASCII码,或者至少是非负的。@deplicationdelicator我喜欢我的表情符号lowercase@Miket25当然,当然,我在想一些不那么有趣的事情,比如
Ä