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
......有很多,需要可以查找