目录
零基础 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++ 常用函数
在 C / C++ 中字符串分为多字节字符串和宽字节字串(也称 unicode 字符串),具体区别请参考:《unicode 和多字节区别》;
C 语言中 _strupr_s 函数可用于将多字节字符串中的小写转大写,而 _wcsupr_s
函数则用于将 unicode
宽字节字符串中的小写转大写,需要包含头文件 string.h
,_wcsupr_s
函数语法如下:
/* *描述:此类函数是用于将unicode字符串中的小写转大写 * *参数: * [in/out] _Str:将该字符串中的大写字符转换为小写 * [in] _Size:拼接后的字符串大小(并非目标字符串大小也并非原始字符串大小) * *返回值:errno_t是微软新定义的一种类型,这种类型是一种整型,代表错误代码,具体参考MSDN介绍, * 若果是0 则代表没有错误,如果是其他的值 ,则会抛出一个值; */ //头文件:string.h errno_t _wcsupr_s(char * _Str, size_t _Size);
/******************************************************************************************/ //@Author:猿说编程 //@Blog(个人博客地址): www.codersrc.com //@File:C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写 //@Time:2021/08/25 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.SHUOPYTHON.com" }; //使用wprintf输出中文需要设置输出文字的语言区域,否则乱码 setlocale(LC_ALL, "chs"); //chs 表示中文 ,需要包含头文件 Locale.h wprintf(L"_wcsupr_s之前 dst:%s\n", dst); _wcsupr_s(dst, wcslen(dst) + 1); wprintf(L"_wcsupr_s之后 dst:%s\n", dst); system("pause"); } /* 输出结果: _wcsupr_s之前 dst:www.SHUOPYTHON.com _wcsupr_s之后 dst:WWW.SHUOPYTHON.COM 请按任意键继续. . . */
1. _wcsupr_s 第二个参数需要包含'\0'
,否则崩溃!
_wcsupr_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
未经允许不得转载:猿说编程 » C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写