C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写 - C语言零基础入门教程

目录

零基础 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

三.猜你喜欢

  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 相互转换

未经允许不得转载:猿说编程 » C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写

上一篇:Python 利用 shutil 模块复制文件(上)


下一篇:c#利用内存拷贝方式改变bitmap图像宽高