ifstream в C ++ не принимает переменную - PullRequest
0 голосов
/ 01 апреля 2012

Я попытался использовать следующий фрагмент кода:

int main()
{
string location_file ("test.txt");
string data;

ifstream file (location_file);
getline (file, data);
file.close();

cout << data;
return 0;
}

Но это не сработает.Теперь, если бы я использовал «ifstream file (« test.txt »)», это было бы так.Зачем?Разве это не то же самое в конце?

Ответы [ 2 ]

5 голосов
/ 01 апреля 2012

Поскольку в более ранних версиях стандарта C ++ (раздражающе) не было конструктора для ifstream, который принимал бы string, поэтому вам придется сделать:

ifstream file(location_file.c_str());
2 голосов
/ 01 апреля 2012

Проблема в том, что конструктор ifstream не принимает string в качестве параметра, а только char const*. Теперь "test.txt" имеет тип char const[9], который распадается на char const* в соответствии с правилами продвижения типов, поэтому он работает. Однако не существует неявного преобразования из string в char const*, поэтому ваш код не работает.

Чтобы исправить ваш код, создайте свой поток с помощью:

ifstream file(location_file.c_str());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...