在C++中人们发现使用String to Lower case/Upper case的最佳方法是什么?
C++不是一种英语编程语言,这个问题很复杂.有一个很好的多语言方法吗?
#includestd::string data = "Abc"; std::transform(data.begin(), data.end(), data.begin(), ::toupper);
http://notfaq.wordpress.com/2007/08/04/cc-convert-string-to-upperlower-case/
此外,CodeProject关于常见字符串方法的文章:http://www.codeproject.com/KB/stl/STL_string_util.aspx
> std::string data = “Abc”; > std::transform(data.begin(), data.end(), data.begin(), ::toupper);
这将有效,但这将使用标准的"C"语言环境.如果您需要为另一个区域设置获得tolower,则可以使用facet.上面使用facet的代码是:
locale loc(""); const ctype& ct = use_facet >(loc); transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype ::tolower), &ct));
对于希望使用Nic Strong的答案的复制粘贴者,请注意"use_factet"中的拼写错误和std :: transform缺少的第三个参数:
locale loc(""); const ctype& ct = use_factet >(loc); transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype ::tolower), &ct));
应该
locale loc(""); const ctype& ct = use_facet >(loc); transform(str.begin(), str.end(), str.begin(), std::bind1st(std::mem_fun(&ctype ::tolower), &ct));