C++里面,字符的使用
std::string是标准c++里面的实现,使用c++的string类实现,必须加入头文件
#include <string>
using std::string;
using std::wstring;
或者
using namespace std;
std是命名空间,std::string可以定义一个类型为srting的变量。如果你使用了using namespace std; std::string可以写成string,比如:
string str;
C++里面,std::string与std::wstring
1.std::wstring主要用于utf-16编码的字符,std::string用于存储单字节的字符( ASCII字符集 )和UTF-8编码的字符。
2.如果你的程序支持多种语言,那么使用UTF-16来处理字符会方便一些,因为该编码中的每个字符都占用2个字节;而UTF-8中的字符所占的字节可能是1个字节或者多个字节(范围是1 ~ 6 个字节),多字节的字符编码对于处理字符不方便,而且std::string也没有提供对UTF-8的支持。
3.wstring的存在主要是因为有汉字,而char对应string,chart_t对应wstring。
以下代码的输出是乱码的
string s = "嗨嗨!";
cout << s[1] << endl;
正确输出是这样的
string s = "嗨嗨!";
cout << s[2] << s[3] << endl;
而使用wstring,那么是这样的(在前面加L或者是_T)
wcout.imbue(std::locale("chs"));
wstring ws = L"嗨嗨!";
wcout << ws[1]<< endl;
wchar_t本质上是一个unsigned short,2个字节的大小,即16bit,
窄字符,一般用于满足ASCII编码,一个单元一个char
宽字符,一般用于满足UNICODE编码,一个单元两个char
也就是说,宽字符,每表示一个字符其实是占了16bit,即2个char的大小。而汉字就是需要16bit来表示。