[問題] 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