用fstream编写文件

时间:2015-08-23 18:24:22

标签: c++

我试图创建一个接受用户输入并将其写入文本文件的简单程序。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(){
    string name; int score; fstream scoreSheet;
    scoreSheet.open("score_sheet.txt");
    string stayOpen = "y";
    while(stayOpen == "y"){
        scoreSheet >> name >> score;
        cout << "Do you want to add another entry? (y/n) ";
        cin >> stayOpen;}
    scoreSheet.close();
    return 0;}

运行此命令时,除gmon.out外,目录中不会创建任何文件。为什么不创建文件以及如何将用户输入写入文件?

4 个答案:

答案 0 :(得分:1)

  • 要创建文件并写入该文件,您必须在open function中指定模式。
  • 每次当您将“将数据写入文件”时,您必须扫描数据。
  • 下面是更新的代码。希望这能解决您的问题。

    copy from 'a.dat';

答案 1 :(得分:0)

您需要>> cin或某个存在的文件。与>>一起使用时,scoreSheet运算符应为<<,因为您尝试将写入而不是从中读取的流。另外,您应该考虑将fstream更改为ofstream,因为您要写入文件

答案 2 :(得分:0)

将文件作为输出打开时创建文件,而不是输入。

当您要将文件中的数据读入变量时,该文件应该已经存在(否则,数据应该来自哪里?)。 另一方面,如果要将数据写入文件,并因此在写入模式下打开它,那么如果文件尚不存在,则将创建该文件。

答案 3 :(得分:0)

如果要将文件流写入,则应使用ofstream。另外,正如其他人所评论的那样,要写入文件,您需要从其他地方获取内容,例如从控制台输入或其他文件进行输入。请尝试以下代码作为指南。您也可以查看fstream或关于此主题的任何体面的书籍(例如,C ++ Primer第8章)

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(){
    string name; int score; 
    fstream scoreSheet("score_sheet.txt", fstream::out);
    // Only proceed if file opened successfully
    if (scoreSheet) {
        string stayOpen = "y";
        while(stayOpen == "y"){
            cin >> name >> score;
            fstream << name << score << "\n";
            cout << "Do you want to add another entry? (y/n) ";
            cin >> stayOpen;
        }
        scoreSheet.close();
    }
    return 0;
}