C++字符串操作指南:char数组与string类的初始化与使用技巧
每种编程语言,除了有 int、float、long 这些最为基本的数据类型之外,字符和字符串也必须是其“必备全家桶”中的一员。

C++的字符串,与许多后起之秀相比,当然不能说使用起来十分方便(或许会觉得比较难用),然而它的灵活性却绝对是非常突出的。
字符串,本质上说其实就是“一串字符”,也就是字符数组。
字符串的初始化
char 数组 charr1,其大小为 10,内容为 "android"。
定义了一个字符数组 charr2,其大小为 20,并且初始化为 {"hello"};这是在 C++ 11 中的一种数组定义和初始化方式。
在 C++ 11 中,有一个字符数组 char charr2[20],其初始值被设定为 "jaguar"。
std::string str1 的值为 "morgan"。
string str2 = {"morgan"};
在 C++ 11 中,有一个字符串 str3,其内容为 "morgan"。
我们能够通过两种途径来声明字符串类型。其一为 char 数组;其二为 std 标准库中的 string 类。
其实上面的char数组,等价于下面的形式:
定义了一个字符数组 char charr1[10],其中包含字符 'a'、'n'、'd'、'r'、'o'、'i'、'd' 以及字符串结束标志 '\0',后面还有两个 '\0' 填充。
数组本质上其实是指针,所以在 C++中,会用 char 数组的'\0'元素来表示字符串的结束。
char 数组需要明确指定其长度。与之相比,string 则无需如此麻烦。
字符串的相关操作
1.获取字符串长度
获取字符数组 charr1 的长度,通过调用库函数 strlen() 来实现,将其长度赋值给变量 len1 。
调用 string 对象的成员函数 size() 来获取 str1 的长度,将其赋值给 len_str1 ,即 len_str1 等于 str1 的大小。
字符串连接
结果是 "androidhello"
string newStr = str1 + str2;
字符串拷贝
将 charr1 中的内容复制到 charr3 中;dst 为 charr3,src 为 charr1;执行 strcpy 操作,从 charr1 复制到 charr3
将 str1 赋值给 str4 ; 把 str1 复制到 str4 中 ; str1 被赋值给 str4 ; str1 被复制到 str4 里 ; 让 str1 赋值给 str4 ; 使 str1 复制到 str4 ; 把 str1 的值赋给 str4 ; 让 str1 的内容复制到 str4 ; 使 str1 的数据复制到 str4 ; str1 的值被赋给 str4 ; str1 的内容被复制到 str4 ; str1 的数据被复制到 str4
字符串的IO操作
通常我们有从命令行输入字符串的需求。那么,让我们来看一看 char 数组是如何实现的,以及 string 对象又是怎样实现的呢?
char name[20];
cin >> name 这种方式存在陷阱,接下来将展开进行说明。
cin.getline(name, 20);
string sName;
getline(cin, sName);
cin >> sName;
查找子字符串:find
函数原型:
查找指定字符串 str,从指定位置 pos(默认为 0)开始进行查找,返回找到的位置类型 size_type
使用string替代char数组
char 数组存在不少缺点。C++建议用 string 来替代 char 数组。主要原因包含以下一些方面:
char site[10] = "house";
将"site"与"is white in DC."进行拼接;拼接后的长度若大于 10,就会覆盖相邻的内存。