2011-05-10 16 views
1

私はフォーマットの文字列が STRING,INT,INT,INT のistringstreamオブジェクトを持っています。 "name、20,30,40" 私はstd:stringやintのような特定の型の変数に値を読みたいと思っています。 どうすればいいですか?C++:stringstreamからの読み込み

答えて

3

怠惰な方法:

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

それはどんな賢明な方法でフォーマットエラーを処理しないので、それは「怠惰」です。

よりスマートな方法はコンマで区切って文字列のベクトルに変換し(必要に応じて整数に変換できます)、boost.spiritなどの本格的なパーサーを使用します。

+0

これはエラーを簡単に処理できるようにすることができます: 'char c; stream(ストリーム、str、 '、')&&ストリーム>> i1 >> c && c == '、' &&ストリーム>> i2 >> c && c == '、&& stream >> i3).. 。 –

+0

@トニー確かに、それはエラー処理を扱います。 – Cubbi

関連する問題