我想将std::string
转换为大写。我知道函数toupper()
,但是在过去我遇到了这个函数的问题,但是因为使用字符串需要迭代每个字符,所以它几乎不理想。
有没有一种方法能够以正确的方式运作?
答案 0 :(得分:2)
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); });