顺序容器 - 3【C++ Primer 学习笔记 - 第九章】

string 操作
string s;定义一个新的空string 对象,命名为 s
string s(cp);定义一个新的 string 对象,用 cp 所指向的 C风格字符串初始化该对象
string s(s2);定义一个新的 string 对象,将其初始化为 s2 的副本
is >> s;从输入流 is 中读取一个以空白字符分隔的字符串,写入 s
os << s;将 s 写入到输出流 os 中
getline( is, s);从输入流 is 中读取一行字符,写入 s
s1+ s2;将 s1 和 s2 串接起来,产生一个新的 string 对象
s1 += s2;将 s2 拼接在 s1 后面
关系操作符==
!=
<
<=
>
>=












string 可以看成字符容器,同 vector 一样,连续存储,支持 capacity 和 reserve 操作。
支持 begin 、 end、 erase、 clear 等操作,
但是,不支持 push_front、back、front 等操作。


string s("Hello world");
string::iterator iter = s.begin();
while(iter!=s.end())
	cout << *iter++;
cout << endl;


构造 string 对象的其他方法
string s(cp, n)创建一个string 对象,它被初始化为 cp 所指向数组的前 n 个元素的副本
string s(s2, pos2)创建一个 string 对象,
它被初始化为一个已经存在的 string 对象 s2 中从下标 pos2 开始的字符串副本
如果 pos2 > s2.size(); 则操作未定义
string s(s2, pos2, len2)创建一个 string 对象
它被初始化为 s2 中从下标 pos2 开始的 len2 个字符的副本。
如果 pos2 > s2.size(); 则操作未定义
无论 len2 是多少,最多只能复制 s2.size() - pos2 个字符










string s1;
string s2(5, 'a');
string s3(s2);
string s4(s3.begin(), s3.begin() + s3.size()/2);

char *cp = "Hiya";
char c_array[] = "world!!!!";
char no_null[] = {'H', 'i'};
string s5(cp);		// "Hiya"
string s6(c_array, 5);	// "world"
string s7(c_array+5, 4);	// "!!!!"
// 错误:string s8(no_null);  no_null 不是空字符结尾
string s8(no_null, 2);

// 注意与 string s6(c_array, 5); 的区别
string s9(s5, 2);	// "ya"
string s10(s5, 0, 2);	// "Hi"
string s11(s5, 0, 100);	// "Hiya"


string 类型特有的版本(此表除非特殊说明,都返回 s 的引用)
s.insert(pos, n, c)在下标为 pos 的元素之前插入 n 个字符 c
s.insert(pos, s2)在下标为 pos 的元素之前插入 string 对象的副本 s2
s.insert(pos, s2, pos2, len)在下标为 pos 的元素之前插入 s2 中从下标 pos2 开始的 len 个字符
s.insert(pos, cp, len)在下标为 pos 的元素之前插入 cp 所指向的数组的前 n 个字符
s.insert(pos, cp)在下标为 pos 的元素之前插入 cp 所指向的以空字符结束的字符串的副本
s.assign(s2)用 s2 的副本替换 s
s.assign(s2, pos2, len)用 s2 中从下标 pos2 开始的 len 个字符副本替换 s
s.assign(cp, len)用 cp 指向的数组的前 len 个字符副本替换 s
s.assign(cp)用 cp 指向的以空字符结束的字符串副本来替换 s
s.erase(pos, len)删除从下标 pos 开始的 len 个字符










  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值