2015-05-18 2 views
0

Im пытается использовать указатель, чтобы указать на мой желаемый поток ввода в зависимости от решения пользователя. Это то, что ive получил до сих пор.Как указать на входной поток?

string fileName = "test.txt"; 
ifsteam = myFile; 
myFile.open(fileName.c_str(), ifstream::in); 
istream * myStream;  
if (file_mode) { 
    myStream = &myFile; 
} else { 
    myStream = &cin; 
} 
string out; 
while (myStream >> out) { 
    cout << out << endl; 
} 

Проблема заключается в том, что ничто не вытекает из myStream.

Любая помощь была бы принята с благодарностью.

+0

О, дорогой, как неловко, кажется, что я забыл включить файл «text.txt» в рабочий каталог. Некоторая проверка ошибок будет далеко, моя плохо. – Tristus

+0

Этот код не компилируется. – Galik

ответ

1

Одна из проблем заключается в том, что «myStream» является указателем на istream, но в цикле while он используется как экземпляр istream. Вам нужно почитать указатель на правильность работы кода. Например:

while (*myStream >> out) { 
    cout << out << endl; 
} 
Смежные вопросы