今天遇到一个题目,用stringstream流解决非常方便,趁此想总结一下stringstream的用法。
- 总结
方法 | 描述 |
---|---|
A<<B | 将字符串B的内容载入到字符串流A里 |
str() | 将字符串流里的内容转化成字符串 |
A>>B | 忽略空格前导空格,将字符串流A的字符载入到字符串B里,随后指针遇到空格或者末尾停止 |
rbbuf() | 输出当前指针位置到末尾的字符串 |
eof() | 判断当前指针是否是在末尾(最后一个字符的后一个),是的话返回true |
- A<<B ,str()
stringstream ss;
string s=" 1 2 3 4 ",out;
ss<<s;// 把字符串载入字符流 相当于赋值 ss=s
ss>>out;
cout<<out;// 结果是 “1”
cout<<ss.str(); //结果是" 1 2 3 4 "
- A>>B
stringstream ss;
string s="1 2 3",out;
ss<<s;//ss=s 载入
ss>>out;//存到out 指针遇到空格停止
cout<<out;//输出"1"
- rbbuf()
stringstream ss;
string s="1 2 3",out;
ss<<s;//ss=s 载入
ss>>out;//存到out 指针遇到空格停止
cout<<ss.rdbuf();//输出 " 2 3" (2前面有空格
- eof
stringstream ss;
string s="1",out;
ss<<s;
ss>>out;
cout<<ss.eof();// true