在 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”并尝试写入文件时,它不会让我在它之后“输入”文件名
cout<<"Please enter the name of the file you wish to open:\n";
. 它立即要求输入要写入文件的文本。仅当我使用 if 语句并询问用户是否要写入文件时才会出现此错误。如果我删除“if 语句”并将“if 语句”中的代码写入 main 本身,而不给用户输入 Y 或 N 的选项,则代码可以正常工作。所以我知道这不是 if 语句中的代码错误,它与我理解这段代码应该如何工作的概念有关!请原谅我的愚蠢,我缺少一些明显的东西,但我似乎找不到原因。
解决方案:对于遇到同样问题的任何人,您所要做的就是cin.ignore();
在cin.getline();
.