在isstrinstream中是否存在跳过/忽略下一个或甚至下一个n个单词的方式?
读n次变量的可能性似乎是可行的,但非常笨拙:
for (int i = 0; i < n; ++i)
{
std::string tmp;
some_stream >> tmp;
}std::istream::ignore似乎没有完成这项工作,因为只有n个字母被跳过。
发布于 2022-05-26 11:33:16
它是笨重的,因为它不够常见,没有得到适当的注意,以得到一个标准的算法到位。
{
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库没有这样的接收器,并且在这一种情况下添加它,可能会比原来的解决方案造成更多的混乱。我想说的是,现在的惯用方法就是像上面这样做一个循环。
https://stackoverflow.com/questions/72391023
复制相似问题