c++中的字符串归纳

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来表示。

猜你喜欢

转载自blog.csdn.net/qq_34167202/article/details/89394524