如何将 std::string 转换为大写? [复制]

Posted

技术标签:

【中文标题】如何将 std::string 转换为大写? [复制]【英文标题】:How to convert std::string to upper case? [duplicate] 【发布时间】:2018-02-09 17:51:29 【问题描述】:

我想将std::string 转换为大写。我知道函数toupper(),但是在过去我遇到过这个函数的问题,无论如何它都不是理想的,因为与字符串一起使用需要遍历每个字符。

是否有替代方法可以在当时以正确的方式工作?

【问题讨论】:

如何将字符序列转换为大写可能不涉及迭代这些字符? 为什么功能不存在,而不是一直重新创建***。 ISNUMERIC 和 REPLACE 是我最近遇到的另外两个例子。 【参考方案1】:

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); );

【讨论】:

“与字符串一起使用需要遍历每个字符。” 这里也一样,奶油、糖果和糖浆。

以上是关于如何将 std::string 转换为大写? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将“char”转换为“std::string”? [复制]

如何将 std::string 转换为 WCHAR

如何将 UTF-8 std::string 转换为 UTF-16 std::wstring?

如何将 System::String^ 转换为 std::string?

如何将 UCHAR 虚拟键代码转换为 std::string [重复]

如何将 std::string 转换为字节 [关闭]