【问题标题】:Fastest way to read a file line by line with an arbitrary number of characters in each逐行读取文件的最快方法,每个文件中包含任意数量的字符
【发布时间】:2010-12-15 08:30:20
【问题描述】:

好的,我正在尝试找出哪种方式可以更快地读取我正在使用的文本文件。文件内容如下所示

1982 3923 3542 4343 2344 3453 2 334 423423 32432 23423

它们基本上只是任意数量的 int 数字,我需要逐行阅读。使用 getline 或插入 (>>) 运算符会更好吗?我个人认为使用插入运算符实现起来会容易得多,但我不知道如何制作程序,以便它读取同一行中的所有 int 数字,直到它到达末尾。我正在考虑将其设置如下:

ifstream input;
input.open("someFile.txt");
if (input) {
    char* ch;
    while (ch != '\n\)
        getline(input, buffer, ' ')

唯一的问题是我必须转换为 int,然后将每个 int 放入一个数组中。我想要的最终目标是生成一个二维数组,其中每行 int 都是一个 int 数组。任何关于最佳实施的建议都值得赞赏!

【问题讨论】:

    标签: c++ file-io multidimensional-array


    【解决方案1】:

    我会保持简单:

    ifstream in(...);
    string line;
    while (getline(in, line)) {
        istringstream line_in(line);
        while (line_in) {
            int val = 0;
            if (line_in >> val) {
                // Do something with val
            }
        }
        // eol
    }
    

    【讨论】:

      【解决方案2】:
      1. 您必须进行基准测试才能获得正确答案。
      2. 这两个函数的速度由实现定义。您可能会在不同的编译器上得到不同的结果。
      3. 最快的方法可能是使用定制的有限状态机。但这些内容与您所了解的一样难以阅读。

      首先生成正确的代码。如果您以后需要,请对其进行微调。

      【讨论】:

        猜你喜欢
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 2018-07-10
        • 2021-12-08
        • 1970-01-01
        • 2011-12-23
        相关资源
        最近更新 更多