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第五版