Открытие файла для чтения в C ++, проблема со строкой имени файла

0

Я открываю файл для чтения в C++ (Linux, Debian).

ifstream input ("readme");

Вышеупомянутые работы, но когда я пытаюсь:

string filename = "readme";
ifstream input (filename);

Я получаю error: no matching function for call to... загрузки страницы, начиная с error: no matching function for call to...

Почему это не работает и как я могу использовать строковую переменную в качестве ввода имени файла?

Теги:
ifstream

2 ответа

4

Вы можете использовать:

string filename = "readme";
/* Convert filename to C string of type const char* 
 (null terminated) using c_str method
*/
ifstream input (filename.c_str()); 

Или используйте флаг С++ 11

-std=c++11 или -std=c++0x

Ссылка: c_str

1

Конструктор ifstream и друзей, принимающих std::string, был добавлен только в С++ 11, что означает, что вы должны использовать стандартную реализацию стандартной библиотеки С++ 11 или, по крайней мере, одну, которая поддерживает определенную функцию. См. Cppreference для получения дополнительной информации.

Чтобы иметь возможность использовать std::string качестве имени файла в вашем случае, используйте std::string::c_str():

string filename = "readme";
ifstream input (filename.c_str());

Этот метод работает для более старых компиляторов, отличных от С++ 11.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню