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 字符串小寫轉大寫

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM