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

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 面向对象

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 设计模式

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ STL

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 技术杂谈

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 常用函数


一._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函数实战

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C/C++ _wcslwr_s 函数 –  unicode 字符串大写转小写
//@Time:2021/08/23 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#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.CODERSRC.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.CODERSRC.com
_wcslwr_s之后 dst:www.codersrc.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. C语言 数组下标越界和内存溢出区别
  2. C语言 使用指针遍历数组
  3. C语言 指针和数组区别
  4. C语言 指针数组和数组指针区别
  5. C语言 野指针
  6. C语言 函数值传递和址传递
  7. C语言 函数不定长参数
  8. C语言 函数指针
  9. C语言 指针函数
  10. C语言 回调函数 callback
  11. C语言 #pragma once
  12. C语言 #include <> 与 #include “” 区别
  13. C语言 const 修饰函数参数
  14. C语言 const 和 define 区别
  15. C语言 #运算符
  16. C语言 ##运算符
  17. C语言 __VA_ARGS__
  18. C语言 ##__VA_ARGS__
  19. C语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C语言 va_start / va_end / va_arg 自定义 printf 函数
  21. C语言 main 函数
  22. C语言 main 函数参数 main(int argc, char *argv[])
  23. C语言 局部变量
  24. C语言 全局变量
  25. C语言 全局变量和局部变量区别
  26. C语言 static
  27. C语言 extern
  28. C/C++ Unicode 和多字节区别
  29. C/C++ wprintf 输出中文乱码
  30. C/C++ char 和 wchar_t 相互转换

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容