C++ では、現在、ofstream を使用してファイル (txt ファイルとしましょう) に書き込むことについて学んでおり、独自の小さなコードを作成して自分で試してみることにしました。コードが意図したとおりに機能しないため、コードについて質問があります。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
char opt;
cout<<"Would you like to write to a new/existing file? [Y/N]\n";
cin>>opt;
if(opt=='Y'||opt=='y') {
ofstream file;
char filename[50];
char statement[55];
cout << "Please enter the name of the file you wish to open:\n";
cin.getline(filename, 50);
file.open(filename);
cout << "Please enter the text you wish to be written on the file:\n";
cin.getline(statement, 55);
file << statement;
file.close();
}
else {
return 1;
}
return 0;
}
コードでは、ファイルに書き込むかどうかをユーザーに尋ねています。Y を入力すると、「if ステートメント」に入り、コードを実行しますが、N (またはその他のもの) を入力すると、実行に失敗します。私の問題は、「Y」と言ってファイルに書き込もうとするたびに、ファイル名を書き込んだ後にファイル名を「cin」できないことです。
cout<<"Please enter the name of the file you wish to open:\n";
. ファイルに書き込むテキストを入力するように即座に求められます。このエラーは、if ステートメントを使用して、ファイルに書き込みたいかどうかをユーザーに尋ねたときにのみ発生します。「if ステートメント」を削除し、「if ステートメント」内のコードを取り、ユーザーに Y または N を入力するオプションを与えずにそれをメイン自体に書き込むと、コードは正常に機能します。したがって、if ステートメント内のコードのエラーではないことはわかっています。これは、このコードがどのように機能するかを理解するという私の概念と関係があります。私が行方不明であることが明らかな何かがあるという私の愚かさを許してください、しかし私はその理由を見つけることができないようです.
解決策:同じ問題を抱えている人にとっては、cin.ignore();
後はcin.getline();
.