提示用户输入文件以保存数据

时间:2012-11-11 23:33:48

标签: c++

我想要做的是提示用户输入一个文件来保存我试过的数据:

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

4 个答案:

答案 0 :(得分:3)

在C ++ 03中没有构造函数或open函数接受std::stringmyfile.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;
}