библиотека fstream, пытающаяся создать файл с именем переменной (c ++) - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь создать файл, имя которого связано с переменной строкового типа, однако, когда я пытаюсь запустить его, я получаю эту ошибку - [Ошибка] не соответствует вызову '(std :: ofstream {akastd :: basic_ofstream}) (const char *) '

Вот код:

void Crear()
{   
    string nombre;
    ofstream output;
    ifstream input;

    cout << "Deme el nombre de su archivo: ";
    cin.ignore();
    getline(cin, nombre);

    //this is where the error happens
    output(nombre.c_str());
}

1 Ответ

2 голосов
/ 06 ноября 2019

В этом выражении:

output(nombre.c_str());

Компилятор считает, что output является "вызываемым", но std :: fstream не перегружал оператор вызова. Таким образом, вы получаете ошибку во время компиляции.

Чтобы исправить это;вы либо вызываете участника open:

    output.open(nomber); // directly because the new standard allows strings for fstream::open

, либо при инициализации output:

std::ofstream output(nombere); // (contructor of ofstream that takes std::string) or 
std::ofstream output(nombere.c_str()); // ctor that takes const char*
...