0
string str("fujian");
string newstr;
transform(str.begin(), str.end(), newstr.begin(), ::toupper);
cout << newstr << endl;

为什么这个关于字符串 toupper 的代码示例的结果是什么?

4

2 回答 2

3

您的代码写到末尾,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;
于 2013-05-10T06:35:29.343 回答
1

您没有为 newstr 分配任何空间。

在此处查看更多信息:C++ std::transform() 和 toupper() ..为什么会失败?

于 2013-05-10T06:36:19.250 回答