头文件
#include<string> using namespace std; //string定义在命名空间std中
文档:string标准库
定义和初始化string对象
string是一个内部定义的类,初始化类对象的方式是通过类内部定义的构造方法决定的。下面列出几个string常用的初始化方式
string s1; //默认的初始化方式,s1是一个空串 string s2(s1); //s2是s1的副本,这里使用的是拷贝构造函数 string s2 = s1; //等价与s2(s1) string s3("value"); //s3是字面值“value”的副本,除了字面值最后的那个空字符外(编译器在每个字符串后面添加了一个“\0”这个空字符) string s3 = "value"; //等价于s3("value") string s4(n, 'c'); //把s4初始化为由连续n个字符c组成的串
string对象上的操作
string对像的读写和c++内置类型的读写是一样的,它可以使用通过标准库中的stringstream来读写string对象
string s; cin>>s; //将string对象读入s,遇到空白停止 cout<<s<<endl;;
如果我们希望保留输入的空白符,这是就应该使用getline函数代替原来的>>运算符,getline函数的参数是一个输入流和一string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)
string s; cin >> s; cout << s << endl; //使用>>每次只会读入一个单词,遇到空白符就停止流的读入
string s; getline(cin, s); cout << s; //使用getline是可以保留输入时的空白符,直到遇到换行符停止,虽然它会读入换行符,但是不会存到string对象中 cout << endl; //自己添加换行,endl的作用是结束当前行,并刷新显示缓冲区
c标准库string函数
在c++中可以使用C语言标准库提供的一组函数,需要加入的头文件:#include< cstring>
strlen(p) 返回p的长度,空白符不计算在内 strcmp(p1,p2) 比较p1和p2的相等性,如果p1==p2,返回0,如果p1>p2,返回正值,如果p1<p2,返回负值 strcat(p1,p2) 把p2附加到p1之后,返回p1; strcpy(p1,p2) 将p2拷贝给p1,返回p1;
传入上述函数的指针必须指向以空字符结束的数组