有时我使用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
对我来说是无用的价值,我只需要丢弃它们。我可能会认为整行没用或我可能会认为某些这些值无效。
我的问题是:有没有办法丢弃给定类型的值而不必在堆栈上声明无用的变量(浪费和不太可读)?
答案 0 :(得分:2)
您可以使用std::stringstream::ignore
与分隔符\n
跳过第一行,如下所示:
ss.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
或者用作分隔符空格或者将值分开以便一次丢弃一个:
ss.ignore(std::numeric_limits<std::streamsize>::max(), ' '); // delimiter is space
ss.ignore(std::numeric_limits<std::streamsize>::max(), ','); // delimeter is comma