No puedo abrir el nombre del archivo variable

¿Hay alguna razón por la que Dev C++ no me file.open(file_name_variable) hacer file.open(file_name_variable) ? No entiendo por qué no me permite abrir nada más que un nombre codificado como file.open("abc.txt") ¿cómo file.open("abc.txt") esto? ¿No usas Dev C ++?

Esto es básicamente lo que tengo:

 int open_file(string file_name){ ifstream file; file.open(file_name); if (!file.is_open()){ return 0; } return 1; } 

Necesitas pasarle una cadena-c. Utilizar:

 file.open( file_name.c_str() ); 

En C ++ 11, esto ya no es necesario. Se agregó una firma que toma std::string .

fstream::open requiere un const char * como primer argumento.

 void open ( const char * filename, ios_base::openmode mode = ios_base::in | ios_base::out ); 

No toma un std::string (que es una vergüenza por cierto).
Necesitas convertir tu std::string a const char *

 file.open(file_name.c_str()) 

Alexandre tiene razón, creo. La firma de abierto es:

void open (const char * filename, ios_base :: modo openmode);

Está intentando pasar un std :: string como const char *, pero std :: string no tiene un operador const char * (por razones de seguridad). En su lugar, tienes que usar el método c_str (). El problema no es que la conversión implícita a const char * debería estar disponible, sino que basic_ifstream debería tener una sobrecarga abierta que acepte una cadena; según mi conocimiento, esto se agrega en C ++ 0x, pero no No tengo una referencia para eso de antemano.