使用std :: transform将字符串转换为所有大写字母

Adr*_*ian 5 c++ stl

我正在使用变换算法和std :: toupper来实现这一点,但这可以在一行中完成,像这样吗?

transform(s.begin(), s.end(), ostream_iterator<string>(cout, "\n"),std::toupper);
Run Code Online (Sandbox Code Playgroud)

我得到错误,所以我必须为此创建一个函数并使用transform调用它,或者我可以使用一些适配器?

Naw*_*waz 9

使用ostream_iterator<char>而不是ostream_iterator<string>:

transform(s.begin(),s.end(),ostream_iterator<char>(cout,"\n"),std::toupper);
Run Code Online (Sandbox Code Playgroud)

std::transform转换每个字符并将其传递给输出迭代器.这就是输出迭代器的类型参数应该char代替的原因std::string.

顺便说一句,每个字符都将打印在换行符上.那是你要的吗?如果没有,请不要通过"\n".

-

注意:您可能必须使用::toupper而不是std::toupper.

看到这些