string str("fujian");
string newstr;
transform(str.begin(), str.end(), newstr.begin(), ::toupper);
cout << newstr << endl;
为什么这个关于字符串 toupper 的代码示例的结果是什么?
您的代码写到末尾,newstr
因此具有未定义的行为。
请尝试以下任一方法:
// version 1
string str("fujian");
string newstr(str);
transform(newstr.begin(), newstr.end(), newstr.begin(), ::toupper);
cout << newstr << endl;
// version 2
string str("fujian");
string newstr;
transform(str.begin(), str.end(), std::back_inserter(newstr), ::toupper);
cout << newstr << endl;
您没有为 newstr 分配任何空间。