string 类型支持长度可变的字符串,满足对于字符串的一般应用
1、对象定义以及初始化
#include<string> using namespace std; int main(){ string s1, string s2(s1); string s3("value"); string s4(n,'c'); //初始化为字符c的n个副本 }
因为历史原因以及要与c语言兼容,字符串字面值于标准库string不是同一种类型,注意区分
#include<string> #include<iostream> using namespace std; string s1; int main(){ string s2; cout<<s1<<" "<<s2<<endl; }
以上这个例子发现s1和s2都是空字符串
2、string对象的读写
读取并忽略开头的所有空白字符
读取直至再次遇到空白字符
int main(){ string s; cin>>s; cout<<s<<endl; return 0; }
可以多个同时输入
string s,s1; cin>>s>>s1; cout<<s<<s1<<endl;
循环输入怎么写:
直接cin或者使用getline
getline操作,这个函数接受两个参数;一个输入流对像和一个string对象。getline函数从输入流的下一行读取,并保存内容到string中,不包括换行符。如果开头遇到换行符则读取一个空的字符串。
string s; while(cin>>s){ cout<<s<<endl; } 或者说使用getliney也可以 while(getline(cin,s)){ cout<<s<<endl; }
string对象的操作
1、常用函数
s.empty() s.size() s[n] s1+s2 s1=s2 v1==v2 != < <= > >=
2、注意点 string::size_type:
string::size_type c++库中的配套类型保证足够大且能储存任意长度的string对象的长度,可以看作是unsigned类型,不要把size函数的返回值赋值给一个int类型,size_type所存储的长度是int类型的两倍
3、string关系操作符
字符串比较采用了大小写敏感的字典序比较
string substr="hello"
string phrase="hello world"
string slang="hiya"
substr<phrase slang="">phrase slang>substr
string 对象的赋值:
string s1,s2="hello world";
s1=s2; 赋值操作后,s1包含了一个s2的副本
两个string对象相加可以直接连接,也可以和字符串字面值拼接</phrase>
string s1("hello, ") string s2("world\n") string s3=s1+s2; //s3是hello, world string s3=s1+","+s2+"\n"; 这里要注意,进行字符串拼接时,左右两个值至少要有一个是 string s4="world"+"hello" //非法操作 string s5=s1+","+"world" //正确操作 s1+","先返回一个string类型 再去加“world” string s6="hello"+","+s2; //非法操作
4、从string对象获取字符
string s="hello world"
cout<<s[1];
s[2]='*';
5、string对象中字符的处理
isalnum(c) 是字母或者数字,为true isalpha(c) 是字母则返回true ......有很多,需要可以查找