Класс FStream и использование строк в качестве параметров

Deneme::Deneme(string FileName){

 fstream textfile;
 textfile.open(FileName);
 }

Это дает мне ошибку, но когда я набираю textfile.open("randomname"); вместо textfile.open(ИмяФайла); вроде нет проблем. Почему это? Это может быть простой вопрос, но я новичок и не смог найти решение этого.


person baris_ercan    schedule 13.03.2012    source источник
comment
Связано: stackoverflow. ком/вопросы/32332/   -  person Etienne de Martel    schedule 14.03.2012


Ответы (3)


fstreams принимает только const char*. Вместо этого используйте textfile.open(FileName.c_str()); или fstream textfile(FileName.c_str()); (хотя C++11 принимает const std::string&). Вот удобный сайт, на котором можно узнать, как объявляются конструкторы и функции. .

person Jesse Good    schedule 13.03.2012

Открытый метод fstream принимает указатель const char, в то время как вы передаете std::string по значению, я полагаю, что это может быть ошибкой. Пытаться:

textfile.open(FileName.c_str());
person Masci    schedule 13.03.2012

Используйте стандартную систему, соответствующую C++: C++2011 предоставляет конструкторы и open() функции, принимающие std::string const&. Для системы до C++ 2011 вам нужно использовать name.c_str() для перехода к файловому потоку.

person Dietmar Kühl    schedule 13.03.2012