如何忽略其余部分?

清醒

我编写了一个按其速度分级的程序,并且即使从文件中读取输入(而不是手动插入),我也通常认为I / O是瓶颈。在某些情况下,该程序不需要当前行的全部输入,而应继续在输入的下一行继续读取。

我已经找到std::cin.ignore(UINT_MAX, '\n')了一个选择。但是,假设,如果剩下的行上还有更多字符,该怎么办?我如何才能丢弃整个生产线的其余部分?


对于那些希望获得更多细节和示例的人:

#include <iostream>
#include <climits>
#include <iomanip>
#include <algorithm>
typedef unsigned int uint_t;

int main () {
    std::ios_base::sync_with_stdio(false);

    int t; std::cin >> t;

    for (int testcase = 0; testcase < t; testcase ++){
        // num entries in the next line
        unsigned int n; std::cin >> n;

        for(uint_t q=0; q<n; q++){
            uint_t height; std::cin >> height;
            if (height < 3){
                // do something
                std::cout << "Considering " << height << '\n';
            } else {
                // stop, finish reading line, then do next test case
                std::cin.ignore(UINT_MAX, '\n');
                break;
            }
        }
        std::cout << "Finished testcase " << testcase << std::endl;
    }
    return 0;
}

输入文件示例:

root@41d06f89ab19:/code# cat exmpl.in
2
4
1 2 3 4
6
1 2 3 4 5 6

这个示例文件当然可以很好地工作:

root@41d06f89ab19:/code# ./exmpl.exe <exmpl.in
Considering 1
Considering 2
Finished testcase 0
Considering 1
Considering 2
Finished testcase 1

但是,假设我在该行上剩余的输入数字多于UINT_MAX为了便于演示,假设(在代码UINT_MAX1替换):

./exmpl.exe <exmpl.in
Considering 1
Considering 2
Finished testcase 0
Finished testcase 1

在这种情况下,4第三行中的数字将保留下来,并在第二个测试用例运行中作为第一个数字读取。我想知道如何忽略该行上的任何剩余数字,即使它们大于UINT_MAX从标准输入读取数据。

代词

该行上剩余的输入数字多于UINT_MAX

你想用

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

std::numeric_limits<std::streamsize>::max()是指示ignore不计算字符的特殊值即使您的行长于该行(除非您在烤面包机上运行,​​否则这几乎是不可能的),所有行都将被跳过。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AutoMapper:“忽略其余部分”吗?

页面其余部分的CSS

如何忽略部分文本,并在其余部分中进行搜索和替换?

如何爆炸字符串的前10个元素而忽略其余部分(以逗号分隔)

如何使内联块元素跨越文本行的其余部分?

如何用星号替换切词的其余部分?

无论长度如何,如何匹配列表的其余部分

如何使单个Rocket磁贴与系统的其余部分异步

如何使导航栏与页面的其余部分重叠?

如何用RecyclerVeiw填充屏幕的其余部分?

如何获取SQL中每个项目的其余部分?

突出显示图像中的特定RGB并忽略其余部分

在pentaho中,我该如何忽略格式不正确的XML文件并继续其余部分

如何跳过序列的其余部分

如何用纯色填充背景的其余部分

如何删除外壳中单词的其余部分?

如何显示从匹配行开始的文件的其余部分?

如何退出函数,但继续执行程序的其余部分

如何计算和的其余部分的结果 (VB .NET)

如何对班级的其余部分隐藏支持字段

当ServerCall在第一个ServerInterceptro中关闭时如何忽略gRPC(java)ServerInterceptor的其余部分?

填写屏幕的其余部分

如何将 JTextField 与 GridLayout 的其余部分分开

C++:如何优化复制 .txt 文件的其余部分?

如何在 Python 中压缩数组但保留其余部分?

野牛中的“其余部分”

regex - 如何通过忽略长文本的其余部分,仅在前 10 行中匹配 email:password regex 组合

如何忽略 NameError 并继续运行程序的其余部分?

如何与程序的其余部分同时显示计时器?