c++字符串大小写转换

使用boost库实现文本大小写转换 接下来,我们将使用boost::locale::to_upper函数对一个字符串进行大小写转换,最后将转换后的字符串输出到屏幕上。其中,boost::locale::to_upper是一个非常常用的函数,它能够将一个字符串中的所有字母都转换为大写形式。在上面的代码中,我们首先使用boost::locale::generator类创建了一个本地化设置对象,并将其设置为全局本地化环境。然后,我们定义了一个待转换的字符串str,并使用boost::locale::to_upper函数将其转换为大写形式。 阅读详情

由于ANSI和Unicode在函数名上有差别,故都列出来,不过本人以Unicode为主。

【1.用C语言标准库函数toupper,tolower】
头文件:cctype   c下面:ctype.h
转大写
Ansi版: int toupper(int c);</a>
Unicode版:int towupper(wint_t c);
MSDN: toupper, _toupper, towupper, _toupper_l, _towupper_l

转小写:
int tolower(
   int c
);

int towlower(
   wint_t c
);

MSDN:tolower

缺陷:只能转换单个字符

Example:

    WCHAR wch = 'a';
    wch = towupper(wch); // A

【2.用C++语言标准库函数_strlwr_s, _strupr_s】
注意:要使用安全的字符串函数,不要用_strlwr。
头文件:string.h
转小写:
Ansi:
errno_t _strlwr_s(
   char *str,
   size_t numberOfElements
);

Unicode:
errno_t _wcslwr_s(
   wchar_t *str,
   size_t numberOfElements
);

注意:numberOfElements 要加上最后NULL字符长度,即numberOfElements = strlen(str) + 1;

MSDN:http://msdn.microsoft.com/en-us/library/y889wzfw(VS.80).aspx

转大写:
errno_t _strupr_s(
   char *str,
   size_t numberOfElements
);

errno_t _wcsupr_s(
   wchar_t * str,
   size_t numberOfElements
);

MSDN: http://msdn.microsoft.com/en-us/library/sae941fh(VS.80).aspx

Example:

    WCHAR wideStr[] = L"Abc";
    _wcslwr_s(wideStr, wcslen(wideStr) + 1); // abc
    _wcsupr_s(wideStr, wcslen(wideStr) + 1);// ABC

【3.std::string 转换大小写】
很遗憾,std::string 没有提供大小写转换的功能,所以只能用STL中的transform结合toupper/tolower完成。
头文件: string, cctype,algorithm
转小写
transform(str.begin(),str.end(),str.begin(),tolower);
transform(wstr.begin(), wstr.end(), wstr.begin(), towlower);
转大写
transform(s.begin(), s.end(), s.begin(), toupper);
transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);

Example:
    wstring wstr =L"Abc";
    transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);

【4.boost库中string_algorithm 提供了大小写转换函数to_lower 和 to_upper】

Example:
#include <boost/algorithm/string.hpp>   
using namespace std;   
using namespace boost;

wstring wstr =L"Abc";
boost::to_lower(wstr); // abc

====================================================================
附完整Example

**
* @file     test.cpp
* @brief    字符大小写转换
* @author   greenerycn@gmail.com
* @date     2009-7-1
*/

#include "stdafx.h"
#include <cstring>
#include <windows.h>
#include <cctype>
#include <algorithm>
#include "boost\algorithm\string.hpp"
using namespace std;

int wmain(int argc, WCHAR* argv[])
{
    char ch = 'a';
    ch = toupper(ch);

    WCHAR wch = 'a';
    wch = towupper(wch);

    WCHAR wideStr[] = L"Abc";
    _wcslwr_s(wideStr, wcslen(wideStr) + 1);

    _wcsupr_s(wideStr, wcslen(wideStr) + 1);

    wstring wstr =L"Abc";
    transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);

    boost::to_lower(wstr);

    return 0;
}



源地址:http://www.cnblogs.com/greenerycn/archive/2009/07/01/1515080.html

你以为你懂 Java 反射?看了这篇源码分析,我发现我以前都错了 摘要:本文讲述了一次生产环境Metaspace内存溢出的故障排查经历。事故源于一个通用数据导出功能中频繁使用反射调用method.invoke(),触发了JVM的"膨胀机制":当同一Method对象调用超过15次时,JVM会动态生成GeneratedMethodAccessor类,导致Metaspace被撑爆。文章分析了问题根源在于循环中反复调用getMethods()创建新Method对象,并提出了三种解决方案:缓存Method对象、改用MapStruct/MethodHandle工具 阅读详情

相关推荐

qt项目中添加 jsoncpp 库

qt使用jsoncpp库

deroy 1328

C++中常用的大小写转换(4种常用方法)

C++中常用的大小写转换(4种常用方法)

mwssx的博客 1万+

高通机型多功能 改写串码 meid码工具

高通机型多功能 改写串码 meid码工具软件全中文支持可以改写串码 改写MEID码软件内带售后设置进入密码操作简单方便使用有需要的友友下载

C/C++字符串大小写转换的几种方式

实现了几种常用的字母大小写转换的方法

JunJie的个人博客 1万+

关于CPP的字符串大小写转换(待补充)

字符串转换大小写是一个常用的功能。 遗憾的是,std::string 没有提供大小写转换的功能。 有一种相对方便的方法是用STL中的transform结合toupper/tolower完成:头文件: string, cctype,algorithm转小写transform(str.begin(),str.end(),str.begin(),tolower); transform(wstr.beg

_Previous的博客 3294

C C++ 字符串大小写转换

在ASCII表中,对应的大小写字母的ASCII值相差32,比如 A 为 65, a 则为 97。

luohaha66的博客 1168

c++字符串大小写转换的几种方式

原文链接:转自我的个人博客 tolower toupper函数 tolower 函数原型: int tolower(int ch); 函数返回: 返回ch所代表的字符的小写字母 所属文件: <ctype.h> toupper 函数原型: int toupper(int ch); 函数返回: 与ch相应的大写字母 所属文件: <ctype.h> #include...

我是没有梦想的小白 1万+

C++字符串大小写转换

今天在刷领扣上的一道题: 其中需要‘A’和‘a’都看成相等的,所以我就想到了+32或者-32来实现。但是十分复杂,因为字符串中字符太多,而且也先判断在改变。所以我就在网上查了一些资料。 可以用transform函数转换字符串的大小写。 头文件:#include&lt;algorithm&gt;‘’ 函数原型之类的没有研究,只看了他的用法 transform(str.begin(), s...

yulong__li的博客 4050

Strcat /Strcpy /Strcmp / Strncmp/ Strlen 函数原型

1、Strcat函数原型如下: #include #include #include char *strca(char *dst, const char * src) { char *dst_t; dst_t = (char *)malloc(sizeof(dst) + sizeof(src)); char *start = dst_t; assert(dst && src

angle_birds的专栏 1111

C++string进行大小写转换的三种方法

C++string进行大小写转换的三种方法。

2万+

Boost库:字符串操作

结合Boost官网 由于这一章内容过多,我将采用四个小章,精简原文四个小部分内容。 第四小章还包含了题目及讲解。 区域设置: setlocale(LC_ALL,“”) locale::global(std::locale("German")); //设置全局区域德语环境 字符串操作: 一、将字符串所有字符转成大写 boost::algorithm::to_upper("")//自身转化 boost::algorithm::to_upper_co..

feikudai8460的博客 1350

c++11 标准模板(STL)本地化库 - std::tolower(std::locale) 用本地环境的 ctype 刻面将字符转换为小写

用给定 loacale 的 std::ctype 平面所指定的转换规则,若可能则转换字符 ch 为小写。

qq_40788199的博客 613

c++大小写转换

/ 输出 "hello world!:上述方法仅适用于英文字母,如需处理其他语言字符(如带重音符号的字母),需使用更复杂的库(如ICU)。// 字符串转换:全部转为大写。

2302_80264092的博客 2346

C++字符串转为大写/小写

说在前面 最近紧急处理bug时候,想进行C++字符串大小写转换,发现好像之前没有用到过?!,顺带说一下C#的是真的方便~,其实并不是没有,而是之前真的没有用过, 那么需要用了,就查查吧,实践测试一下,有多种方法。 正文 有多种方法, 可以使用C语言标准库函数toupper,tolower 以及对应的unicode版本 twoupper,twolower 可以使用C++标准库中的_strlwr_s, _strupr_s 以及对应的unicode版本 _wcslwr_s, _wcsupr_s 可

哈市雪花的博客 8554
上一篇: C++ primer 第四版 习题4.34.4.35
下一篇: C++primer 第四版 Page83 习题3.14
dfdssddfdf
博客等级 码龄15年 9粉丝 12原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值