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

C++ 读取和合并两个不同文件中的特定列,c++,C++,我试图读取两个不同文件的第三列中的特定行,并将它们合并到一个包含两列的文件中。具体来说:我想读取文件1中的第9行(17+2*139)和文件2中的第(17+2*139)行(结束)。下面是我写的代码。它仅输出第一个文件的结果: int main() { std::ifstream outfile_LD("outfile_LD.dat"); std::ifstream outfile_LE("outfile_LE.dat"); std::string line_LD;

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

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;
}
intmain(){
标准::ifstream outfile_LD(“outfile_LD.dat”);
标准::如果流输出文件(“输出文件数据”);
std::字符串行\u LD;
std::字符串行;
整数计数=0;
如果(!outfile_LD | |!outfile_LE){
标准::cout>log10like_LE;
std::cout-pedid\u-LD>>lnlike\u-LD>>log10like\u-LD;

我想问题出在这一行

if (std::getline(outfile_LD, line_LD) && std::getline(outfile_LE, line_LE))
当第一个文件被读取时,它返回false。因此
&&
将返回false,当第二个文件被处理时,您将得到大量NL。请尝试使用
|
op


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

您试图从两个文件中读取两行并将其输出到另一个文件?我试图从两个文件中读取多行。具体来说,file1和file2的格式相同(第1-8行和第286-295行的垃圾信息,第9-285行和第296-537行的基因信息),我想从文件1读取第9-285行,从文件2读取第296-537行,并将这些行导出到第1列(对于文件1)和第2列(对于文件2)。您确定第二个文件中的行数超过295行吗?我只想分别读取这两个文件,而不是同时尝试读取这两个文件。这将使您的代码更易于调试。是的,我确定第二个文件中的行数超过295行。是的,我开始分别读取这两个文件。非常感谢谢谢你的及时回答,克里斯!