정수를 포함하는 여러 파일 (각 줄마다 하나씩)을 읽고이를 정렬 한 후 출력 텍스트 파일로 병합해야하는 할당이 있습니다. 나는 C++을 처음 사용하므로 모든 것이 어떻게 작동하는지 알지 못합니다. 프로그램을 두 개의 .txt 파일로 테스트하고 있습니다. 첫 번째 파일은 fileone.txt라고하는데, 1,2,7을 포함하고 있습니다 (형식을 지정하는 방법을 모르지만 다른 행에 모두 있습니다). 두 번째 파일은 filetwo.txt이며 1,3,5, 9,10 (다시 모든 정수가 다른 행에 있음).ifstream을 사용하여 텍스트 파일의 정수 인쇄
두 파일을 모두 열고 내용을 인쇄하는 다음 코드를 작성했습니다.
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
ifstream iFile;
ifstream jFile;
iFile.open("fileone.txt");
jFile.open("filetwo.txt");
int int1 = 0;
int int2 = 0;
if (iFile.is_open() && jFile.is_open()){
while (iFile.good() || jFile.good()) {
iFile >> int1;
jFile >> int2;
cout << "From first file:" << int1 << endl;
cout << "From second file:" << int2 << endl;
}
}
iFile.close();
jFile.close();
return 0;
}
이 프로그램의 출력은 오전 데 문제가 첫 번째 파일의 마지막 번호가 여러 번 인쇄됩니다입니다
입니다. 원하는 출력은 파일에서 마지막 정수를 인쇄 한 후 인쇄를 중지하는 것입니다. 이 문제는 두 번째 파일에 첫 번째 파일보다 더 많은 정수가 포함 된 경우에만 나타납니다. 첫 번째 파일이 끝날 때 인쇄를 중지하고 두 번째 파일의 모든 번호를 계속 인쇄하는 방법이 있습니까?
while (iFile.good() || jFile.good()) {
iFile >> int1;
jFile >> int2;
int c = iFile.peek();
int d = jFile.peek();
if (c == EOF) {
if (!iFile.eof())
cout << "From first file:" << int1 << endl;
}
if (d == EOF) {
if (!jFile.eof())
cout << "From second file:" << int2 << endl;
}
}
것은 파일의 끝을 확인하고 인쇄 할 경우 처리하는 것입니다 따를
아, 네. 그것은 나의 대답에서 언급 된 것처럼 훨씬 더 나은 숙어이다. –