Итак, я сейчас пишу редактор строк в качестве учебного проекта по вводу-выводу, записи файлов и тому подобного. Он написан на C++, и в настоящее время я пытаюсь записать файл по выбору пользователя. У меня есть аргументы CLI, но я в настоящее время не знаю, как реализовать программный способ указания файла для записи.C++: cin >> * char
char *filename;
if (argc >= 2){
filename = argv[1];
} else{
cout << "file>";
cin >> filename;
cin.ignore();
}
Это прекрасно работает, когда я использую аргументы командной строки; однако, когда я этого не делаю, как только я запускаю программу, это происходит с ошибками сегментации. Место, где я использую фактическое имя файла, находится в команде сохранения:
void save(char filename[], int textlen, string file[]){
ofstream out(filename);
out << filestring(textlen, file);
out.close();
}
Которая также работает отлично. Есть ли способ помочь мне? Полный исходный код для обзора: https://github.com/GBGamer/SLED
Используйте [ 'станд :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) и [читать это] (Http: //chris-sharpe.blogspot. co.uk/2013/05/reading-input-with-stdgetline.html) (self plug). – BoBTFish
Проблема в том, что instream, если я правильно помню, не может использовать строки как входные данные. Есть ли у вас альтернативы, которые используют строки? – ubsan
строка имеет функцию преобразования 'c_str()', которая возвращает тип const char *. – suspectus