天天看点

标准库string类型学习

     string类型支持长度可变的字符串。

1. string对象的定义和初始化

string s1; //默认构造函数,s1为空串

string s2(s1); //将s2初始化为s1的一个副本

string s3(“value”); //将s3初始化为一个字符串字面值副本

string s4(n, ‘c’); //将s4初始化为字符‘c’的n个副本

2.string对象的读写

(1) 用输入操作符来读取string对象

cin >> s,规则是:读取并忽略开头所有的空白字符(如空格,换行符,制表符等);读取字符直至再次遇到空白字符,读取终止。

示例:

string s;

while ( cin >> s )

    cout << word << endl;

(2)用getline读取整行文本

getline(cin,s),该函数接受两个参数:一个输入流对象和一个string对象。getline并不忽略行开头的换行符。

while ( getline(cin, s) )

    cout << line <<endl;

无可避免的,这两种方式都要遇见处理空白字符的情况。其中,string类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符扔留在输入流中);而getline函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string对象中)。

3. string 对象的操作

s.empty(); //判断字符串是否为空,若空返回true,否则返回false

s.size(); // 返回s中的字符个数

s[n]; // 返回s中位置为n的字符, 位置从0开始计数

string s1, s2;

s1 + s2; // 将s1和s2连接成一个新字符串,返回新生成的字符串

s1 = s2; // 把s1内容替换为s2的副本

s1 == s2; // 比较两个字符串的内容,相等则返回true,否则返回false