string str("fujian");
string newstr;
transform(str.begin(), str.end(), newstr.begin(), ::toupper);
cout << newstr << endl;
为什么这个关于字符串toupper的代码示例的结果是什么?
答案 0 :(得分:3)
您的代码写在newstr
的末尾,因此有undefined behaviour。
请尝试以下任一方法:
// 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;
答案 1 :(得分:1)
您没有为newstr分配任何空间。
在此处查看更多内容:C++ std::transform() and toupper() ..why does this fail?