string
头文件string,string类位于名称空间std中,因此必须提供using编译,或者使用std::string来引用它。
在很多方面,使用string对象的方式与使用字符数组相同。
string对象声明为简单变量,而不是数组:类设计让程序能够自动处理string的大小。
运算符+将两个string对象合并起来,还可以使用运算符+=将字符串附加到string对象的末尾。
函数strcpy()将字符串复制到字符数组中,函数strcat()将字符串附加到字符函数末尾。括号中两个位置,将后一个复制到或者附加到前一个当中。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//strtype3.cpp -- more string class features //strtype4.cpp -- line input #include <iostream> #include <string> #include <cstring> using namespace std; int main() { char charr1[20]; char charr2[20]="jaguar"; string str1; string str2="panther"; str1=str2; strcpy(charr1,charr2); str1+=" paste"; strcat(charr1," juice"); int len1=str1.size(); int len2=strlen(charr1); cout<<"The string "<<str1<<" contains "<<len1<<" characters.\n"; cout<<"The string "<<charr1<<" contains "<<len2<<" characters.\n"; char charr[20]; string str; cout<<"Length of string in charr before input: "<<strlen(charr)<<endl; cout<<"Length of string in str before input: "<<str.size()<<endl; cout<<"Enter a line of text:\n"; cin.getline(charr,20); cout<<"You entered: "<<charr<<endl; cout<<"Enter another line of text:\n"; getline(cin,str); cout<<"You entered: "<<str<<endl; cout<<"Length of string in charr after input: "<<strlen(charr)<<endl; cout<<"Length of string in str after input :"<<str.size()<<endl; return 0; }
string类具有自动调整大小的功能,从而能够避免这种问题发生。函数strlen()是一个常规函数,而size()是一个类方法。方法是一个函数,只能通过其所属类的对象进行调用。
初始化的数组的内容是未定义的;函数strlen()从数组的第一个元素开始计算字节数,直到遇到空字符。对于未被初始化的数据,第一个空字符的出现位置是随机的,因此在运行过程中得到的初始的数组长度是不同的。string对象的数组在未被初始化时自动设置为0。
比较string类字符串:类设计能够使用关系运算符进行比较,因为类函数重载了这些运算符。
字符串和string对象用途几乎相同,但与数组相比,string对象与结构的更相似。可以将一个结构赋给另一个结构,也可以将一个对象赋给另一个对象。可以将结构作为完整的实体传递给函数,也可以将对象作为完整的实体进行传递。
size()和length()成员函数都返回字符串中的字符数。length()成员来自较早版本的string类,而size()则是为提供STL兼容性而添加的。