有时我使用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
对我来说都是无用的价值观,我只需要抛弃它们。我可能认为整行都是无用的或我可能认为这些值中的一些是无用的。
我的问题是:有没有任何方法可以丢弃给定类型的值,而不必在堆栈上声明无用的变量(要么浪费,要么可读性较差)?
您可以使用std::stringstream::ignore
和delimeter 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
现场演示