在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语句'中并将其写入main本身而不给用户输入Y或N的选项,则代码可以正常工作。所以我知道if语句中的代码不是错误,它与我理解这段代码应该如何工作的概念有关!请原谅我的愚蠢有一些显而易见的东西,但是我似乎无法找到原因。
解决方案:对于遇到相同问题的任何人,您需要做的只是在cin.ignore();
之后cin.getline();
。