我正在尝试读取两个不同文件的第三列中的特定行,并将它们合并到一个包含两列的文件中。具体来说:我想读取第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;
}
答案 0 :(得分:1)
我认为问题出在这一行
if (std::getline(outfile_LD, line_LD) && std::getline(outfile_LE, line_LE))
当读取第一个文件时,它返回false。因此,&&
将返回false,并在处理第二个文件时获得大量NL。尝试使用||
操作。
但是我会在不同的循环中读取第一个文件然后读取第二个文件。另一方面,我认为应该读取第一个块outfile_LD,然后是outfile_LE。在你的代码中它似乎是混合的。