запрашивая у пользователя файл для сохранения данных в

я хочу предложить пользователю файл для сохранения данных в том, что я пробовал:

  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&)»

РЕДАКТИРОВАТЬ:

Поэтому я обновил свой код, но это не позволяет мне ввести имя файла. это почему

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

0

Решение

Вместо

cin >> filename;

который останавливается после первого токена, вы, вероятно, должны использовать

getline(cin, filename);

так что вы можете вводить имена файлов с пробелами.

Также рассмотрите возможность использования argv (и, возможно, некоторой библиотеки для разбора опций).

1

Другие решения

Там нет конструктора или open функция взятия std::string в C ++ 03: myfile.open(save.c_str());, Однако они добавили их в C ++ 11.

Вот хорошая ссылка. Обратите внимание на since C++11 примечание рядом с std::string версия.

3

Конструктор явный и ожидает переменную типа const char *, поэтому вам придется передать save.c_str (), который возвращает const char * для строкового объекта.

1

Вот простая программа, демонстрирующая, что вы хотите сделать:

#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;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector