目录
C++基础(十七)宽字符、wchar_t、wcout、中文乱码/不输出
宽字符和窄字符
-------------------------------------
https://blog.csdn.net/ken2232/article/details/130316198
QString::toWCharArray 与 宽字符路径、空格 (测试OK)(***)
=======================
C++基础(十七)宽字符、wchar_t、wcout、中文乱码/不输出
char的最初设计只是为了满足英文的需求,
计算机普及后各个国家和地区开始针对本地的语言进行字符编码设计,中文也是其中之一。
显而易见,一个字节(char)是无法满足这些编码需求的,于是不同语言的规定一个本地字符所占字节数不定,“多字节字符集”就是这么来的。含义就是多个字节表示一个字符,一个字符可能对应一个字节,也可能对应2个甚至更多的字节。
这种处理多字节很多时候对程序而言并不友好,随着硬件的快速发展,内存不再是计算机和程序的主要制约因素,于是很多高级编程语言就想,不管什么字符,全部用两个字节表示,那就可以大大提高程序(或者操作系统)对字符的处理能力。
C++语言自然也紧随潮流,设计了wchat_t字符,即宽字符,它不管具体字符是什么,全部按照两个字节来编码。为了和传统的char字符区分,wchar_t字符(串)在申明的时候,需要加上大写字母“L”。既然有wchar_t,标准库自然有其对应的字符串:wstring。
const wchar_t* pwValue = L"I Love C++";
除此之外,还要注意,想要用标准输入输出流打印宽字节字符(串),不能用std::cout,需要用std::wcout;同样,如果是文件流,不能用fstream,需要用wfstream。
————————————————
版权声明:本文为CSDN博主「yedawei_1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yedawei_1/article/details/113769765
宽字符和窄字符
https://www.cnblogs.com/limera/p/wchar.html
宽窄字符与UTF16,UTF8不是对应的关系。
宽窄字符是与一个字符所占的字节数有关,如果一个字符只占一个字节,那么那么它就是窄字符,
一个宽字符通常占2个字节(甚至2个以上, utf-8占 4个字节?)。
在c/c++/objective c 中,如果你想把一个窄字符(例如ASCII 字符)表示为宽字符通常的做法是使用wchar来取代char,例如
wchar t = 'A';
wchar_t * p = L"Hello!" ;
这里每一个字符都占了2个字节,并且采用了UTF16编码。