当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《字符串在C++中降低/降低》经验,为你挑选了3个好方法。

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

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



1> Darren Kopp..:
#include 
std::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


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

2> Nic Strong..:
> 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));



3> 小智..:

对于希望使用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));

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有