70 votes

C++ ifstream erreur à l'aide de la chaîne de l'ouverture du fichier chemin d'accès.

J'ai:

string filename: 
ifstream file(filename);

Les compilateurs se plaint pas de match entre ifstream fichier et d'une chaîne. Ai-je besoin pour convertir le nom du fichier à quelque chose?

Voici l'erreur:

error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)'
/usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]

138voto

Seth Carnegie Points 45196

Changement

ifstream file(filename);

pour

ifstream file(filename.c_str());

Parce que le constructeur de l' ifstream prend un const char*, pas un string pré-C++11.

12voto

Alexander Gessler Points 26717

L' ifstream constructeur attend un const char*, de sorte que vous devez faire ifstream file(filename.c_str()); à le faire fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X