我正在使用变换算法和std :: toupper来实现这一点,但这可以在一行中完成,像这样吗?
transform(s.begin(), s.end(), ostream_iterator<string>(cout, "\n"),std::toupper);
Run Code Online (Sandbox Code Playgroud)
我得到错误,所以我必须为此创建一个函数并使用transform调用它,或者我可以使用一些适配器?
使用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.
看到这些