目录
零基础 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++ 常用函数
一._wcsupr_s 函数简介
在 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);
二._wcsupr_s 函数实战
/******************************************************************************************/
//@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 语言 使用指针遍历数组
- C 语言 指针和数组区别
- C 语言 指针数组和数组指针区别
- C 语言 野指针
- C 语言 函数值传递和址传递
- C 语言 函数不定长参数
- C 语言 函数指针
- C 语言 指针函数
- C 语言 回调函数 callback
- C 语言 #pragma once
- C 语言 #include <> 与 #include “” 区别
- C 语言 const 修饰函数参数
- C 语言 const 和 define 区别
- C 语言 #运算符
- C 语言 ##运算符
- C 语言 __VA_ARGS__
- C 语言 ##__VA_ARGS__
- C 语言 函数不定长参数 ##__VA_ARGS__经典案例
- C 语言 va_start / va_end / va_arg 自定义 printf 函数
- C 语言 main 函数
- C 语言 main 函数参数 main(int argc, char *argv[])
- C 语言 局部变量
- C 语言 全局变量
- C 语言 全局变量和局部变量区别
- C 语言 static
- C 语言 extern
- C/C++ Unicode 和多字节区别
- C/C++ wprintf 输出中文乱码
- C/C++ char 和 wchar_t 相互转换
未经允许不得转载:猿说编程 » C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写