freopen()を使用してテキストファイルと画面に印刷しようとしていますが、ファイルへの印刷のみを行っています。freopen()を使用してファイルと画面に印刷する
プログラムの出力をファイルに保存して画面に印刷するのが簡単かどうか疑問に思っていましたか?なぜなら、これは別の方法で動作していたからですが、すべてのステートメントを2回印刷する必要がありました。 1つはファイルのためのもので、もう1つは出力のためのものです。
注:私はC++を初めてお持ちで、次の学期に向けて学びたいと思っています。既にオンラインで見ていて直接ソリューションが必要です。ここで
は、私がこれまで持っているものです。
#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よく形成された質問です。 –
あなたはまだすべてを2回書く必要があります。 freopen(...、stdout)は、stdoutの現在のデスティネーションをfreopen()の最初の引数のファイル(ハンドル)に置き換えます。C/C++のファイル(またはストリーム)は1つの場所にしか移動できません。 初心者として、2つの場所に出力するコードを簡単に書く方法があるかどうかはわかりません。私がやる方法は、ostreamの独自の変種を実装して、一度に2つの場所に書き込むことです。しかし、初心者コーディングはほとんどありません。 –