C/C++ _wcslwr_s函数 – unicode字符串大写转小写

最后更新于:2020-07-23 20:03:20

一._wcslwr_s函数简介

在C/C++中字符串分为多字节字符串和宽字节字串(也称unicode字符串),具体区别请参考:unicode和多字节区别

C语言_strlwr_s函数可用于将多字节字符串中的大写转为小写,而_wcslwr_s函数则用于将unicode宽字节字符串中的大写转为小写,需要包含头文件string.h_wcslwr_s函数语法如下:

/*
*描述:此类函数是用于将unicode字符串中的大写字符转为小写
*
*参数: 
*   [in/out] _Str:将该字符串中的大写字符转换为小写
*   [in] _Size:拼接后的字符串大小(并非目标字符串大小也并非原始字符串大小)
*   
*返回值:errno_t是微软新定义的一种类型,这种类型是一种整型,代表错误代码,具体参考MSDN介绍,
*       若果是0 则代表没有错误,如果是其他的值 ,则会抛出一个值;
*/

//头文件:string.h

errno_t _wcslwr_s(char * _Str, size_t _Size);

三._wcslwr_s函数实战

/************************************************************************/
/*@文件名      : _wcslwr_s.cpp
/*@日  期      : 2020/07/12 21:52
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : C语言教程 - _wcslwr_s函数完成字符串拷贝
/************************************************************************/

#include "stdafx.h"

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include "windows.h"
#include <Locale.h> //setlocale 设置输出文字的语言区域,否则输出wchar字符包含中文乱码


void main()
{
    WCHAR dst[1024] = { L"www.SHUOPYTHON.com" };

    //使用wprintf输出中文需要设置输出文字的语言区域,否则乱码
    setlocale(LC_ALL, "chs"); //chs 表示中文 ,需要包含头文件 Locale.h

    wprintf(L"_wcslwr_s之前 dst:%s\n", dst); 
    _wcslwr_s(dst, wcslen(dst) + 1);
    wprintf(L"_wcslwr_s之后 dst:%s\n", dst);

    system("pause");
}


输出结果:
_wcslwr_s之前 dst:www.SHUOPYTHON.com
_wcslwr_s之后 dst:www.shuopython.com
请按任意键继续. . .

注意:
1._wcslwr_s第二个参数需要包含'\0',否则崩溃!

_strlwr_s(dst, strlen(dst)); //崩溃


2.控制台输出WCHAR/wchar_t(unicode字符串)只能使用wprintf,并非printf;

输出多字节字符串,使用printf函数 ;
输出宽字节字符串,使用wprintf 函数;


3.如果使用setlocale输出的unicode字符串中含有中文,必须通过setlocale函数设置语言为中文,否则乱码;

char* p1 = "C/C++教程-猿说编程";      //普通字符串 - 多字节字符串
wchar_t* p2 = L"C/C++教程-猿说编程";  //unicode字符串 - 字符串有修饰符 L
printf("p1 :%s \n", p1);
wprintf(L"p2 :%s \n", p2);

输出:
p1 :C/C++教程-猿说编程
p2 :C/C++??-????
请按任意键继续. . .

解决办法:参考上面例子,设置语言格式即可

setlocale(LC_ALL, "chs"); //chs 表示中文 ,需要包含头文件 Locale.h


猜你喜欢

1. 三目运算符

2. 逗号表达式

3. char和wchar_t相互转换

4. printf/wprintf函数使用

5. unicode和多字节区别

6. _strlwr_s函数 – 字符串大写转小写




转载请注明: 猿说编程 » C/C++教程 » _wcslwr_s函数 – unicode字符串大写转小写



技术交流、商务合作请直接联系博主
扫码或搜索:猿说编程

python/C++教程

猿说编程
微信公众号 扫一扫关注

赞赏

微信赞赏支付宝赞赏