1
私はフォーマットの文字列が STRING,INT,INT,INT
のistringstreamオブジェクトを持っています。 "name、20,30,40" 私はstd:stringやintのような特定の型の変数に値を読みたいと思っています。 どうすればいいですか?C++:stringstreamからの読み込み
私はフォーマットの文字列が STRING,INT,INT,INT
のistringstreamオブジェクトを持っています。 "name、20,30,40" 私はstd:stringやintのような特定の型の変数に値を読みたいと思っています。 どうすればいいですか?C++:stringstreamからの読み込み
怠惰な方法:
getline(stream, str, ',');
char c;
stream >> i1 >> c >> i2 >> c >> i3;
それはどんな賢明な方法でフォーマットエラーを処理しないので、それは「怠惰」です。
よりスマートな方法はコンマで区切って文字列のベクトルに変換し(必要に応じて整数に変換できます)、boost.spiritなどの本格的なパーサーを使用します。
これはエラーを簡単に処理できるようにすることができます: 'char c; stream(ストリーム、str、 '、')&&ストリーム>> i1 >> c && c == '、' &&ストリーム>> i2 >> c && c == '、&& stream >> i3).. 。 –
@トニー確かに、それはエラー処理を扱います。 – Cubbi