目錄
創(chuàng)新互聯(lián)長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為疏勒企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),疏勒網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C 語(yǔ)言基礎(chǔ)入門
零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C++ 面向?qū)ο?/p>
零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C++ 設(shè)計(jì)模式
零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C++ STL
零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C/C++ 技術(shù)雜談
零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C/C++ 常用函數(shù)
在 C / C++ 中字符串分為多字節(jié)字符串和寬字節(jié)字串(也稱 unicode 字符串),具體區(qū)別請(qǐng)參考:《unicode 和多字節(jié)區(qū)別》;
C 語(yǔ)言中 _strupr_s 函數(shù)可用于將多字節(jié)字符串中的小寫轉(zhuǎn)大寫,而 _wcsupr_s
函數(shù)則用于將 unicode
寬字節(jié)字符串中的小寫轉(zhuǎn)大寫,需要包含頭文件 string.h
,_wcsupr_s
函數(shù)語(yǔ)法如下:
/*
*描述:此類函數(shù)是用于將unicode字符串中的小寫轉(zhuǎn)大寫
*
*參數(shù):
* [in/out] _Str:將該字符串中的大寫字符轉(zhuǎn)換為小寫
* [in] _Size:拼接后的字符串大?。ú⒎悄繕?biāo)字符串大小也并非原始字符串大?。?*
*返回值:errno_t是微軟新定義的一種類型,這種類型是一種整型,代表錯(cuò)誤代碼,具體參考MSDN介紹,
* 若果是0 則代表沒有錯(cuò)誤,如果是其他的值 ,則會(huì)拋出一個(gè)值;
*/
//頭文件:string.h
errno_t _wcsupr_s(char * _Str, size_t _Size);
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C/C++ _wcsupr_s 函數(shù) – unicode 字符串小寫轉(zhuǎn)大寫
//@Time:2021/08/25 08:00
//@Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!
/******************************************************************************************/
#include "stdafx.h"
#include
#include
#include
#include "windows.h"
#include //setlocale 設(shè)置輸出文字的語(yǔ)言區(qū)域,否則輸出wchar字符包含中文亂碼
void main()
{
WCHAR dst[1024] = { L"www.SHUOPYTHON.com" };
//使用wprintf輸出中文需要設(shè)置輸出文字的語(yǔ)言區(qū)域,否則亂碼
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");
}
/*
輸出結(jié)果:
_wcsupr_s之前 dst:www.SHUOPYTHON.com
_wcsupr_s之后 dst:WWW.SHUOPYTHON.COM
請(qǐng)按任意鍵繼續(xù). . .
*/
1. _wcsupr_s 第二個(gè)參數(shù)需要包含'\0'
,否則崩潰!
_wcsupr_s(dst, strlen(dst)); //崩潰
2.控制臺(tái)輸出 WCHAR
/ wchar_t
( unicode
字符串)只能使用 `wprintf ,并非 printf ;
輸出多字節(jié)字符串,使用printf函數(shù) ;
輸出寬字節(jié)字符串,使用wprintf 函數(shù);
3.如果使用 setlocale輸出的
unicode字符串中含有中文,必須通過
setlocale` 函數(shù)設(shè)置語(yǔ)言為中文,否則亂碼;
char* p1 = "C/C++教程-猿說編程"; //普通字符串 - 多字節(jié)字符串
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++??-????
請(qǐng)按任意鍵繼續(xù). . .
*/
解決辦法:參考上面例子,設(shè)置語(yǔ)言格式即可
setlocale(LC_ALL, "chs"); //chs 表示中文 ,需要包含頭文件 Locale.h
未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? C/C++ _wcsupr_s 函數(shù) – unicode 字符串小寫轉(zhuǎn)大寫
本文由博客 - 猿說編程 猿說編程 發(fā)布!