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