2

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

4

1 回答 1

0

您可以使用 ofstream 的 write 方法,这里是示例

于 2013-02-12T00:03:15.560 回答