使用'ofstream'代码错误写入文本文件

时间:2013-02-11 23:45:03

标签: c++ fstream ofstream

在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();

1 个答案:

答案 0 :(得分:0)

您可以使用ofstream here的write方法示例