从两个不同的文件中读取和合并特定列

时间:2015-12-29 21:36:08

标签: c++

我正在尝试读取两个不同文件的第三列中的特定行,并将它们合并到一个包含两列的文件中。具体来说:我想读取第9行 - (17 + 2 * 139)从文件1和行(17 + 2 * 139) - 从文件2结束。下面是我写的代码。它只输出第一个文件的结果:

int main() {
    std::ifstream outfile_LD("outfile_LD.dat");
    std::ifstream outfile_LE("outfile_LE.dat");

    std::string line_LD;
    std::string line_LE;
    int count = 0;
    if (!outfile_LD || !outfile_LE) {
        std::cout << "Error opening file" <<
                     (outfile_LD? 2: 1) << ": " <<
                     strerror(errno) << "\n";
        return 1;
    }

    while (outfile_LD || outfile_LE)
    {
        count++;
        if (std::getline(outfile_LD, line_LD) && std::getline(outfile_LE, line_LE)) {
            if (count < 17 + 2*139) {
                if (count < 8) {
                    continue;
                } else {
                    double pedid_LE, lnlike_LE, log10like_LE;
                    outfile_LE >> pedid_LE >> lnlike_LE >> log10like_LE;
                    std::cout << log10like_LE << "\t";
                }
            } else {
                double pedid_LD, lnlike_LD, log10like_LD;
                outfile_LD >> pedid_LD >> lnlike_LD >> log10like_LD;
                std::cout << log10like_LD;
            }
        }
        std::cout << endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

我认为问题出在这一行

if (std::getline(outfile_LD, line_LD) && std::getline(outfile_LE, line_LE))

当读取第一个文件时,它返回false。因此,&&将返回false,并在处理第二个文件时获得大量NL。尝试使用||操作。

但是我会在不同的循环中读取第一个文件然后读取第二个文件。另一方面,我认为应该读取第一个块outfile_LD,然后是outfile_LE。在你的代码中它似乎是混合的。