4.3.1 string 类简介
ISO/ANSI C++98标准中添加了string类,因此可以使用string类型的变量来存储字符串。要使用string类型,必须在头文件中包含string;string位于名称空间std内;
- 可以使用C-风格字符串来初始化string对象;
- 可以使用cin来将键盘输入存储到string对象中;
- 可以使用数组表示法来访问存储在string对象中的字符;
类设计能让程序自行处理string的大小,例如:程序将输入读取到变量中,将自动调整变量的长度
4.3.2 C++11字符串的初始化
- string str1{"I Love You"};
- string str2={I love You};
- char str3[]={"I Love You Too"};
- char str4[]{"I Love You Too"};
4.3.3 赋值,拼接和附加
- 不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象;
eg:string str1{"I love you "};
string str2=str1;
- string类简化了字符串合并操作;可以用+将两个string对象合并起来(+号右边的加在前一个末尾),还可以使用+=将字符串附加到string的末尾;
eg:string str1,str2,str3;
str3=str1+str2;//str1在前,str2后
str1+=str2;
4.3.4 string类的其他操作(于字符数组比较)
下列函数均包括在cstring头文件中
strcpy()函数——strcpy(char1,char2);//将str2的内容复制到str1中(字符数组)
等同于string类型的赋值;
strcat()函数——strcat(str1,str2);//将字符附加到字符数组末尾(字符数组)
等同于string类型的加法;
strlen()函数——strlen(str1);//计算字符串长度(字符数组)
string则是str1.size()//计算字符串长度(string)
str1不是用作函数参数,而是一个对象,size()是一个类方法。方法是一个函数,只能通过其所属类的对象进行调用。在这str1是一个string类对象,而size()是string类的一个方法。
4.3.5 string类的I/O
如之前所提到的,可以cin>>输入存储到string对象中,可用cout<<来显示string对象;
行输入读取到string对象中的代码:getline(cin,str1);//包含头文件cstring
注:此处getline()不是类方法。它将cin作为参数,指出到哪里去查找输入。
因为C++在有istream类后才加入了strin类型,因此istream的设计考虑到了double和int等等基本C++数据类型,但没有考虑string对象的类方法;
4.3.6 原始(raw)字符串
在原始字符串中,字符表示的就是自己,如\n表示的不是换行,是反斜杠和n,因此显示时将显示这两个字符;原始字符用"(和)"用作定界符,并使用前缀R来标识原始字符串;
cout<<R"(Jim "King" Tutt uses "\n" instead of endl.)"<<'\n'
将显示:Jim "King" Tutt uses "\n" instead of endl.