我想要做的是提示用户输入一个文件来保存我试过的数据:
string save;
cout<<"Enter filename to save (ex: file.txt): ";
cin>>save;
ofstream myfile;
myfile.open(save);
myfile <<"ID \tName \tSales\n";
然而我收到一个错误:没有匹配函数来调用'std :: basic_ofstream&gt; :: open(std :: string&amp;)'
编辑:
所以我更新了我的代码,但这不允许我输入文件的名称。为什么呢?
char file_name[81];
cout<<"Enter filename to save (ex: file.txt): ";
fflush(stdin);
cin.getline(file_name, 81);
答案 0 :(得分:3)
在C ++ 03中没有构造函数或open
函数接受std::string
:myfile.open(save.c_str());
。但是,他们在C ++ 11中添加了它们。
这是nice reference。请注意since C++11
版本旁边的std::string
注释。
答案 1 :(得分:1)
构造函数是显式的,并且需要一个类型为 const char * 的变量,因此您必须传递save.c_str(),它返回字符串对象的const char *。
答案 2 :(得分:1)
而不是
cin >> filename;
在第一个令牌后停止,您应该使用
getline(cin, filename);
所以你可以用空格输入文件名。
另外,请考虑使用argv(可能还有一些库用于选项解析)。
答案 3 :(得分:0)
这是一个简单的程序,展示了你想要做的事情:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string filename;
cout << "Enter filename to save (eg. file.txt): ";
cin >> filename;
ofstream myfile;
myfile.open(filename.c_str());
myfile << "ID \tName\tSales" << endl;
myfile.close();
return 0;
}