我试图创建一个接受用户输入并将其写入文本文件的简单程序。
#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外,目录中不会创建任何文件。为什么不创建文件以及如何将用户输入写入文件?
答案 0 :(得分:1)
下面是更新的代码。希望这能解决您的问题。
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;
}