字符串在C++中降低/降低

Ada*_*dam 25 c++ string unicode

在C++中人们发现使用String to Lower case/Upper case的最佳方法是什么?

C++不是一种英语编程语言,这个问题很复杂.有一个很好的多语言方法吗?

Dar*_*opp 31

#include <algorithm>
std::string data = "Abc";
std::transform(data.begin(), data.end(), data.begin(), ::toupper);
Run Code Online (Sandbox Code Playgroud)

http://notfaq.wordpress.com/2007/08/04/cc-convert-string-to-upperlower-case/

此外,CodeProject关于常见字符串方法的文章:http://www.codeproject.com/KB/stl/STL_string_util.aspx

  • 我认为在这样的字符串文字示例中使用"哑引号"更好,而不是"智能引号".它使复制粘贴编译方面更好. (7认同)
  • 这对非ASCII字符串有何用处? (3认同)

Nic*_*ong 20

> std::string data = “Abc”; 
> std::transform(data.begin(), data.end(), data.begin(), ::toupper);
Run Code Online (Sandbox Code Playgroud)

这将有效,但这将使用标准的"C"语言环境.如果您需要为另一个区域设置获得tolower,则可以使用facet.上面使用facet的代码是:

locale loc("");
const ctype<char>& ct = use_facet<ctype<char> >(loc);
transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));
Run Code Online (Sandbox Code Playgroud)


小智 6

对于希望使用Nic Strong的答案的复制粘贴者,请注意"use_factet"中的拼写错误和std :: transform缺少的第三个参数:

locale loc("");
const ctype<char>& ct = use_factet<ctype<char> >(loc);
transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));
Run Code Online (Sandbox Code Playgroud)

应该

locale loc("");
const ctype<char>& ct = use_facet<ctype<char> >(loc);
transform(str.begin(), str.end(), str.begin(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));
Run Code Online (Sandbox Code Playgroud)