Streams¶
约 258 个字 38 行代码 3 张图片 预计阅读时间 2 分钟
Stringstream¶
| C++ | |
|---|---|
1 2 3 4 5 6 7 | |
这段程序执行的结果是:
| Text Only | |
|---|---|
1 2 | |
这是因为stringstream有一个位置指针,当在执行oss << "haha";的时候,指针没有在末尾。我们可以做出如下改动:
| C++ | |
|---|---|
1 2 3 4 5 6 7 | |
| Text Only | |
|---|---|
1 2 | |
这样指针就是在末尾向后移动。
在C++中,istringstream 对象的读取是顺序进行的,每次读取操作都会从当前位置开始,直到遇到空白字符或流的末尾。因此,如果你在同一个 istringstream 对象上进行多次读取操作,每次读取操作都会从上一次读取结束的位置继续。
| C++ | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
| Text Only | |
|---|---|
1 2 | |
注意下面的区别:
| C++ | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
其输出结果是:
| Text Only | |
|---|---|
1 | |
而将double改为int,结果则变为:
| Text Only | |
|---|---|
1 | |
对于istringstream的抓取更准确的说法是:它会抓去尽可能多的有意义的字符。在这里,当其遇到小数点的时候,他认为这不能变成int的一部分,故停止抓取。
下图十分直观:


stringstream v.s. string¶
