std::stringstream - 丢弃一个值

std::stringstream - discard a value

有时我使用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 

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

我的问题是:有没有什么方法可以丢弃给定类型的值,而不必在堆栈上声明无用的变量(既浪费又可读性差)?

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

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

LIVE DEMO

或用作分隔符 space 或任何分隔您的值的东西以一次丢弃一个:

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

LIVE DEMO