std :: stringstream - 丢弃值

时间:2015-11-06 07:24:41

标签: c++ stream

有时我使用std :: stringstream来解析文本文件,例如

8 9
100 1002 3.345
100 102  2.345


std::stringstream ss(file);
int unused1, unused2, first_useful_value;
ss >> unused1 >> unused2;
ss >> first_useful_value >> ...

现在假设第一行,即

8 9 

对我来说是无用的价值,我只需要丢弃它们。我可能会认为整行没用我可能会认为某些这些值无效。

我的问题是:有没有办法丢弃给定类型的值而不必在堆栈上声明无用的变量(浪费和不太可读)?

1 个答案:

答案 0 :(得分:2)

您可以使用std::stringstream::ignore与分隔符\n跳过第一行,如下所示:

  ss.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

LIVE DEMO

或者用作分隔符空格或者将值分开以便一次丢弃一个:

ss.ignore(std::numeric_limits<std::streamsize>::max(), ' '); // delimiter is space
ss.ignore(std::numeric_limits<std::streamsize>::max(), ','); // delimeter is comma

LIVE DEMO