istringstream 跳过下一个 (n) 个词

istringstream skip next (n) word(s)

isstrinstream 中是否有适当的方法来跳过/忽略下一个词,甚至是下 n 个词?

读取变量 n 次的可能性似乎可行,但非常笨重:

for (int i = 0; i < n; ++i) 
{
    std::string tmp;
    some_stream >> tmp;
}

std::istream::ignore 似乎没有完成这项工作,因为只跳过了 n 个字母。

它很笨重,因为它还不够普遍,不足以引起适当的注意以制定标准算法。

{
    std::string tmp;
    for(size_t i = 0; i < number_of_words_to_skip; ++i) some_stream >> tmp;
}

您可以通过创建空接收器使其更漂亮:

std::copy_n(std::istream_iterator<std::string>(some_stream),
            number_of_words_to_skip,
            std::back_inserter(instance_of_something_that_does_not_do_anything));

由于 std 库中没有这样的接收器,因此为这种情况添加它可能会比您原来的解决方案造成更多的混乱。我想说的是,今天的惯用方法是只是像上面那样做一个循环。