Простая проблема, которую вы имеете в том, что переменная filename
, которая хранит имя файла типа char
. Измените его на string
, чтобы он работал.
На другой ноте, попытайтесь разбить сообщение об ошибке вы получили:
no matching function for call to 'std::basic_ofstream::open(std::__cxx11::string&, const openmode&)'
В open(std::__cxx11::string& ...
это ясно говорит о том, что тип данных имя файла должно быть string&
. Это означало, что у вас была ошибка типа данных, что верно, потому что вы использовали char
вместо string
.
Другое: использовать символ только в том случае, если вы хотите принять одну букву в качестве входных данных; когда вы хотите взять слово или предложение, сохраните его в строковой переменной и получите его от пользователя, используя функцию getline()
. Это упростит вашу жизнь.
Чтобы изменить код, во-первых, изменить переменную оператор объявления для:
string fileName; // std:: is not required as you have the line "using namespace std"
Во-вторых, изменить входной заявление на имя файла из cin >> filename;
в:
getline(cin, fileName);
Он должен работа после этих изменений.
EDIT: Я нашел peoblem на ваш вопрос. Вы неф изменить открытую команду:
myFile.open(fileName.c_str(), ios::out);
Как говорится в сообщении об ошибке, функция нуждается в строке, передаваемую к а, тем не менее, когда мы берем строку в качестве входных данных и сохранить его в переменной FileName, он просто преобразует строку в const char *. Это невидимо для вас, когда вы запускаете код, но время от времени он вызывает ошибку.
Это должно определенно работать сейчас.
fileName должно быть строкой –
Не было бы так просто разрешить только 1 символьный файл. – drescherjm
@ Raindrop7 Meh !! –