freopen()을 사용하여 텍스트 파일과 화면으로 인쇄하려하지만 인쇄 만하고 있습니다.freopen()을 사용하여 파일 및 화면으로 인쇄
프로그램 출력을 파일로 저장하고 화면에 인쇄하는 것이 쉬운 지 궁금합니다. 나는 다른 방식으로이 작업을했기 때문에 모든 문장을 두 번 인쇄해야했습니다. 하나는 파일 용이고 다른 하나는 출력 용입니다.
참고 : 저는 C++을 처음 접했고 다음 학기 수업을 위해 배우려고하기 때문에 이미 온라인으로 보았으므로이 솔루션에 대한 간단한 답을 찾을 수 없으므로 직접 대답이 필요합니다. ,
$ my-program | tee output.txt
터미널에 표준 출력에 복사합니다 :
이#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<fstream>
using namespace std;
void menu(){
cout << "\t********************************************************\n"
<< "\t* Welcome to slot machine. *\n"
<< "\t* Would you like to play? (1 to play, 2 not to play) *\n"
<< "\t********************************************************\n\n";
return;
}
void update(int arr[], int &token) {
if (arr[0]==arr[1] && arr[1]==arr[2]) {
token+=4;
cout << "You win\n\n";
} else if (arr[0]==arr[1] || arr[1]==arr[2] || arr[0]==arr[2]) {
token+=1;
cout << "You got two out of three\n\n";
} else {
token-=1;
cout << "You lose\n\n";
}
}
int main() {
freopen("file.txt", "w", stdout);
int x, arr[3], token=4;
srand(time(0));
menu();
cin >> x;
while(token!=0) {
cout << "You have " << token << " tokens\n\n"
<< "Pull? (1 to pull, 2 not to pull)\n\n";
cin>>x;
if(x==1) {
for(int i=0; i<3; i++) {
arr[i]=1+rand()%10;
}
cout << "\t\t";
for(int j=0; j<3; j++) {
cout << arr[j] << " ";
}
cout << "\n\n";
update(arr,token);
}
else{
cout << "OK\n";
}
}
cin.get();
return 0;
}
+1 형식이 적절합니다. –
모든 것을 두 번 써야합니다. freopen (..., stdout)은 stdout의 현재 대상을 freopen()의 첫 번째 인수의 파일 (핸들)로 바꿉니다.C/C++의 파일 (또는 스트림)은 한 곳으로 만 이동할 수 있습니다. 초심자로서, 두 곳으로 출력되는 코드를 작성하는 쉬운 방법이 있는지 확신하지 못합니다. 내가 할 수있는 방법은 한 번에 두 장소에 쓰는 ostream의 변형을 구현하는 것입니다. 하지만 초보자 용 코딩은 거의 없습니다. –