我有这个c ++代码。我想阅读两个名为hasil_eta.txt
和hasil_T.txt
的文本文件,然后将它们存储到一个名为eta_T.txt
的文件中。
我读过的文件是1列中的多行。我想加入两个文本文件并将它们存储在一个文件中。
这是代码
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>
#include <string>
#include <sstream>
#include <cstdlib>
#include "rwparams.h"
using namespace std;
string IntToStr(int n){
stringstream result;
result << n;
return result.str();
}
int main(){
ifstream f5;//read eta
ifstream f6;//read T
ofstream f7;//store it into file
string hasil_eta;//menampilkan hasil untuk eta
string hasil_T;//menampilkan hasil untuk T`
int pengulangan = 170;
for (int i = 0; i < pengulangan; i++){
f5.open("hasil_eta.txt");
getline(f5, hasil_eta);
f6.open("hasil_T.txt");
getline(f5, hasil_T);
f7.open("eta_T.txt");
f7 << hasil_eta.c_str();
f7 << " ";
f7 << hasil_T.c_str();
f7 << endl;
f7.close();
f6.close();
f5.close();
}
}
我的问题是如何制作循环来读取文件。
答案 0 :(得分:1)
如果您尝试将两个文件中的行分散为一个,那么您可能需要类似
的内容#include <fstream>
#include <string>
int main(int,char**){
std::ifstream e("hasil_eta.txt");
std::ifstream t("hasil_T.txt");
std::ofstream et("eta_T.txt");
for( std::string e_line, t_line;
std::getline(e, e_line) && std::getline(t, t_line); )
et
<< e_line << std::endl
<< t_line << std::endl
;
return 0;
}
上面的代码将循环n次,其中n是最短文件中的行数。
答案 1 :(得分:0)
您反复重新打开文件,因此您不断阅读输入中的第一行,并截断输出文件。
(还有一个小错误,你从f5
而不是f6
读取。)
打开循环外的文件,或在初始化时指定文件:ifstream f5("hasil_eta.txt");
删除close
来电;析构函数为你处理。
同时删除c_str()
,它们是不必要的。
int main(){
ifstream f5("hasil_eta.txt");
ifstream f6("hasil_T.txt");
ofstream f7("eta_T.txt");
int pengulangan = 170;
for (int i = 0; i < pengulangan; i++){
string hasil_eta;
string hasil_T;
getline(f5, hasil_eta);
getline(f6, hasil_T);
f7 << hasil_eta;
f7 << " ";
f7 << hasil_T;
f7 << endl;
}
}