string初始化方式:
int main()
{
string s1;//没有提供初始值,则默认初始化空串
string s2(s1);//相同类型直接填入
string s3("hehe");//字符串则要加双引号
string s4(10,'a');//初始化为10个a
string s5=s3;
string s6="haha";
cout<<s1<<s2<<s3<<s4<<s5<<s6<<endl;
return 0;
}
打印:heheaaaaaaaaaahaha
用花括号初始化也可以,不是很常用,如:string s7{"abc"}
getline输出一整行
getline:参数(输入流,string对象),读取给定内容,遇到换行符停止(换行符也被读取进去了),它返回一个流的参数。
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
string s;
while(cin>>s)
{
cout<<s<<endl;
}
/*string s1;
while(getline(cin,s1))
{
cout<<s1<<endl;
}*/
return 0;
}
当输入string字符时,遇到空格就停止了,得到一整行(包含空格的)就要用到getline函数,代码中注释部分就是。
string的size和empty函数,一个返回个数,一个返回是否为空。调用形式:s.size() , s.empty() ,其中size函数返回一个string::size_type类型的无符号数。
处理string对象中的每个字符,使用基于范围的for语句来遍历每个元素,并对其进行操作(改变要定义引用),处理一部分字符则要用到下标。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s="pan";
for(auto &c : s)//c的类型不确定,则用auto
{
c='a';//使每个字符都变为a
cout<<c<<endl;
}
string s1="haha";
for(auto &c1 : s1)
{
s1[1]='b';//使其第二个字符变为b
cout<<c1<<endl;
}
return 0;
}
打印:a
a
a
h
b
h
a
参考资料:C++ Primer第五版