[问题] istringstream >>导入观念询问

楼主: redonizuka (R大)   2014-08-17 12:09:15
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
QT
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
None
问题(Question):
从上篇发文,我学会了使用istringstream,但在导入上有些观念要询问,
以一个string作范例,如程式码,为了要将此字串分割于阵列里头
使用while(istr>>b[i]),让他"依序"将值导入于阵列,
想问的是之所以会有依序这个动作是他本身函式内建的动作吗?
我原本以为他是搬移,将istr内的搬至b[i],因此有依序
但将istr.str() cout出,却发现他并不是搬移
再来,若我在while loop里面再对另一个阵列c做导入
while(istr>>b[i])
{
istr>>c[i]
会使得我istr又往前一个资料
想清楚厘清这方面的观念
谢谢
程式码(Code):(请善用置底文网页, 记得排版)
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string s="1 10 22 33";
int b[4],c[4];
istringstream istr;
istr.str(s);
int a=0;
while(istr>>b[a])
{
for(int i=0;i<4;i++)
cout<<b[i]<<"\t";
a++;
cout<<istr.str()<<endl;
}
return(0);
}
作者: x000032001 (版废了该走了)   2014-08-17 12:26:00
stream概念类似queue或buffer 用掉后就不存在了
楼主: redonizuka (R大)   2014-08-17 12:55:00
用掉不存在,但是我后面呼叫cout<<istr...时仍可以完整呼叫,这跟不存在好像有所冲突
作者: sunneo (艾斯寇德)   2014-08-18 00:39:00
stream的<<是将右边放到左边。>>是左边放到右边噢,istr.str会回应stream的内容

Links booklink

Contact Us: admin [ a t ] ucptt.com