C++ 如何将std::string转换为大写?

C++ 如何将std::string转换为大写?,c++,c++11,C++,C++11,我想将std::string转换为大写。我知道函数toupper(),但是在过去,我对该函数有过一些问题,而且它也不太理想,因为使用字符串需要迭代每个字符 是否有一种能以正确的时间方式工作的替代方法?std::toupper有几个重载 template charT-toupper(图表、const-locale&) int-toupper(int-ch) 因此,确定它的地址可能很复杂 您可以使用lambda让编译器找到正确的重载: (此外,aschar可能有符号或没有符号,而toupper需

我想将
std::string
转换为大写。我知道函数
toupper()
,但是在过去,我对该函数有过一些问题,而且它也不太理想,因为使用字符串需要迭代每个字符


是否有一种能以正确的时间方式工作的替代方法?

std::toupper
有几个重载

  • template charT-toupper(图表、const-locale&)
  • int-toupper(int-ch)
因此,确定它的地址可能很复杂

您可以使用lambda让编译器找到正确的重载:

(此外,as
char
可能有符号或没有符号,而
toupper
需要
无符号char
值(或EOF))


将一系列字符转换为大写字母怎么可能不涉及对这些字符的迭代?为什么功能还没有出现,而不需要一直重新创建控制盘。ISNUMERIC和REPLACE是我最近遇到的另外两个示例。“与字符串一起使用时,需要对每个字符进行迭代。”在这里,奶油、糖果和糖浆也是如此。
std::transform(s.begin(), s.end(), s.begin(),
               [](unsigned char c){ return std::toupper(c); });