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

Reading and merging specific columns from two different files

本文关键字:文件 两个 合并 读取      更新时间:2023-10-16

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

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;
}

我认为问题出在这一行

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

当第一个文件被读取时,它返回false。因此&&将返回false,并且在处理第二个文件时会得到很多NL。尝试使用||操作

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