C++处理字符串有两种方式:一种是C风格字符串,一种是 string 类。
C风格字符串有一种特殊性质:必须以空字符串(\0)结尾。例如:
char str1[3] = {'a', 'b', 'c'}; //不是一个字符串
char str2[3] = {'a', 'b', '\0'}; //是字符串
有一种更好的、将字符数组初始化为字符串的方法:
char list1[11] = "abcde"; //自动添加\0
char list2[] = "abcde"; //编译器计算长度并自动添加\0
4.2.1 拼接字符串常量
以下语句等效:
cout << "abc" "def\n";
cout << "abcddef\n";
cout << "abc"
"def\n";
第1行中,第1个字符串中的\0将被第2个字符串的首字符替代。
4.2.2 在数组中使用字符串
要将字符串存储到数组中,有两种方法:1.将数组初始化为字符串常量;2.将键盘或文件输入到数组中。例如:
#include <iostream>
#include <cstring> //提供了字符串相关函数,旧的头文件是 string.h
using namespace std;
int main()
{
const int Size = 15;
char name1[Size];
char name2[Size] = "C++owboy";
cout << "I'm " << name2 << "! What's your name?\n";
cin >> name1;
cout << "Your name has " << strlen(name1) << " letters in an array of " << sizeof(name1) << endl;
return 0;
}
其中,sizeof 运算符指出整个数组长度15,但 strlen() 返回字符串长度而不是数组本身长度。此外,strlen() 只计算可见字符,而不把空字符计算在内。如果要存储 abcd 字符串,数组长度必须大于 strlen(“abcd”) + 1 = 5。