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

コンストラクターは明示的であり、const char *型の変数を想定しているため、文字列オブジェクトのconst char *を返すsave.c_str()を渡す必要があります。

于 2012-11-11T23:37:31.947 に答える
1

それ以外の

cin >> filename;

これは最初のトークンの後で停止します。おそらく使用する必要があります

getline(cin, filename);

したがって、スペースを使用してファイル名を入力できます。

また、argv(およびオプション解析用のライブラリ)の使用を検討してください。

于 2012-11-12T00:39:39.107 に答える
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 に答える