string(二):对象上的操作

<基于 C++ Primer P77>
string 的操作

os << s        // 将 s 写到输出流 os 当中,返回 os
is >> s        // 从 is 中读取字符串赋给 s,字符串以空白分隔,返回 is
getline(is, s) // 从 is 中读取一行赋给 s,返回 false
s.empty()      // s 为空返回 true,否则返回 false
s.size()       // 返回 s 中字符的个数
s[n]           // 返回 s 中第 n 个字符的引用,位置 n 从 0 计起
s1 + s2        // 返回 s1 和 s2 连接后的结果
s1 = s2        // 用 s2 的副本代替 s1 中原来的字符
s1 == s2       // 如果 s1 和 s2 中所含的字符完全一样,则它们相等;string 对象的相等性判断
s1 != s2       // 对字母的大小写敏感
<, <=, >, >=   // 利用字符在字典中的顺序进行比较,且对字母的大小写敏感

1.读写 string 对象
在执行读写操作时,string 对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇到下一处空白为止。
2.读取未知数量的 string 对象

int main()
{
	string word;
	while (cin >> word)
		cout << word << endl;
	return 0;
}

3.使用 getline 读取一整行
如果希望在最终得到的字符串中保留输入时的空白符,应该使用 getline 函数代替原来的 >> 运算符。getline 函数只要一遇到换行符就结束读取操作并返回结果,触发 getline 函数返回的那个换行符实际上被丢弃掉了,得到的 string 对象中并不包含换行符。
4.string 的 empty 和 size 操作
5.string::size_type 类型
(1)string 类及其他大多数标准库类型都定义了几种配套的类型,这些配套的类型体现了标准库类型与机器无关的特性。在具体使用的时候,通过作用域操作符来表明名字 size_type 是在类 string 中定义的。
(2)string::size_type 是一个无符号类型的值而且能足够存放下任何 string 对象的大小。所有存放 string 类的 size 函数返回值的变量,都应该是 string::size_type 类型的。
(3)如果一条表达式中已经有了 size() 函数就不要再使用 int 了,这样可以避免混用 int 和 unsigned 可能带来的问题。
6.比较 string 对象
(1)逐一比较 string 对象中的字符,并且对大小写敏感。
(2)字典顺序:
①如果两个 string 对象的长度不同,而且较短 string 对象的每个字符都与较长 string 对象对应位置上的字符相同,则较短 string 对象小于较长 string 对象。
②如果两个 string 对象在某些对应的位置上不一致,则 string 对象比较的结果实际上是 string 对象中第一对相异字符比较的结果。
7.为 string 对象赋值
8.两个 string 对象相加得到一个新的 string 对象,其内容是把左侧的运算对象与右侧的运算对象串接而成。
9.字面值和 string 对象相加,必须确保每个加号运算符的两侧的运算对象至少有一个是 string。切记,字符串字面值与 string 是不同的类型。

string s4 = s1 + ", ";           // 正确
string s5 = "hello" + ", ";      // 错误
string s6 = s1 + ", " + "world"; // 正确
string s7 = "hello" + ", " + s2; // 错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值