Класс FStream и использование строк в качестве параметров - PullRequest
0 голосов
/ 14 марта 2012
Deneme::Deneme(string FileName){

 fstream textfile;
 textfile.open(FileName);
 }

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

Ответы [ 3 ]

1 голос
/ 14 марта 2012

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

0 голосов
/ 14 марта 2012

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

0 голосов
/ 14 марта 2012

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

textfile.open(FileName.c_str());
...