在这篇文章中,其中一个回答建议通过以下方式更改
std::string
的大小写:std::string str = "Hello World";
std::transform(str.begin(), str.end(),str.begin(), ::toupper);
我已经在Visual Studio 2010中使用过它,并且到目前为止它可以正常工作。但是它是否保证始终按标准工作?我的担心是,我可以想象出一些实现方式,在写入输出迭代器(第三个参数)时可能会使输入迭代器(参数一和参数二)无效。
因此,总结一下,上述方法是否安全可移植?
::toupper
的使用不正确。 - nosid::toupper
可能是一个宏。我需要解决这个问题。 - John Fitzpatricktoupper
替换为一些函数char foobar(char)
,那么您的问题可以直接回答。但是,关于toupper
存在许多问题。请查看https://dev59.com/w3RB5IYBdhLWcg3wEDql中的`unsigned char`。 - nosid