我想把一个
有没有其他方法可以正确地实现这个功能?
std::string
转换为大写形式。我知道有toupper()
函数,但是过去我使用这个函数时遇到了问题,并且在处理字符串时需要迭代每个字符,这并不理想。有没有其他方法可以正确地实现这个功能?
std::toupper
有多个重载:
template <class charT> charT toupper(charT, const locale&)
int toupper(int ch)
因此,获取它的地址可能会很复杂。
您可以使用lambda表达式让编译器找到正确的重载函数:
(此外,由于char
可能是有符号或无符号的,并且toupper
期望得到unsigned char
值(或EOF))
std::transform(s.begin(), s.end(), s.begin(),
[](unsigned char c){ return std::toupper(c); });