2011-05-10 145 views
1

我有一個格式爲字符串的istringstream對象 STRING,INT,INT,INT 例如。 「name,20,30,40」 我想將值讀入特定類型的變量,例如std:string和int。 我該怎麼做?C++:從字符串流中讀取

回答

3

偷懶的方法:

getline(stream, str, ','); 
char c; 
stream >> i1 >> c >> i2 >> c >> i3; 

,因爲它不以任何合理的方式處理格式錯誤,這是「懶」。

更聰明的方式會被逗號分割成一個字符串向量(然後可以根據需要轉換爲整數),或者使用一個完整的解析器,比如boost.spirit。

+0

你可以很容易地處理這個句柄:'char c; if(getline(stream,str,',')&& stream >> i1 >> c && c ==','&& stream >> i2 >> c && c ==','&& stream >> i3).. 。' – 2011-05-10 04:22:16

+0

@Tony事實上,這解決了錯誤處理。 – Cubbi 2011-05-10 10:00:31