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

对我来说是无用的值(value)观,我只需要丢弃它们。我可能会认为整行都没有用,而我可能认为这些值中的某些没用。

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

最佳答案

您可以将 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

关于c++ - std::stringstream-丢弃一个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33561518/

10-11 17:59