String类与wstring类的区别
本质区别
存储字符的区别
#include <iostream>
#include <string>
using namespace std;
int main()
{
wstring wstr1 = L"你好世界"; // L+普通字符串 = 宽字符串
const wchar_t *ch1 = wstr1.c_str(); // 转化为宽字符类型的指针
//setlocale(LC_ALL, "chs");//输出wchar_t类型的必要条件
wcout.imbue(std::locale("chs")); //输出wchar_t类型的必要条件
wcout << *ch1 << endl; // 输出"你"这个文字
}
注:以上两个必要条件选其一即可。
这个程序主要想说明:wstring本质上操作的是wchar_t类型的字符,只不过把对宽字符的操作封装成了类,wstring的使用方式与string类并无差别,但是wstring与string的存储方式有很大的不同,wstring所操作的wchar_t中每个字符占两个字节,可以存储一个汉字,特殊字符……,但是string类的char中每个字符仅占据一个字节内存,没办法存储汉字……等双字节字符,wstring的出现是得更加字符得以加入,如果编写的应用程序需要更好地支持非拉丁字符,如中文和日文,应使用std::wstring。