0

我想要做的是提示用户输入文件以将数据保存在我尝试过的是:

  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 >::open(std::string&)'</p>

编辑:

所以我更新了我的代码,但这不允许我输入文件名。这是为什么

  char file_name[81];
  cout<<"Enter filename to save (ex: file.txt): ";
fflush(stdin);
  cin.getline(file_name, 81);
4

4 回答 4

3

在 C++03中没有构造函数或open函数: . 但是,他们在 C++11 中添加了它们。std::stringmyfile.open(save.c_str());

这是一个很好的参考。请since C++11注意版本旁边的注释std::string

于 2012-11-11T23:35:25.957 回答
1

代替

cin >> filename;

在第一个令牌之后停止,您可能应该使用

getline(cin, filename);

所以你可以输入带空格的文件名。

另外,考虑使用 argv (也许还有一些用于选项解析的库)。

于 2012-11-12T00:39:39.107 回答
1

构造函数是显式的,并且需要一个const char *类型的变量,因此您必须传递 save.c_str(),它为字符串对象返回一个 const char *。

于 2012-11-11T23:37:31.947 回答
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;
}
于 2012-11-12T00:23:25.780 回答