Чтение фиксированного количества символов с << в istream

Я пробовал несколько стратегий чтения файлов на C ++ и наткнулся на это.

ifstream ifsw1("c:\\trys\\str3.txt");
char ifsw1w[3];
do {
    ifsw1 >> ifsw1w;
    if (ifsw1.eof())
        break;
    cout << ifsw1w << flush << endl;
} while (1);
ifsw1.close();

Содержимое файла было

firstfirst firstsecond
secondfirst secondsecond

Когда я вижу результат, он напечатан как

 firstfirst
firstsecond
secondfirst

Я ожидал, что вывод должен выглядеть примерно так:

fir
stf
irs
tfi
.....

Более того, я вижу, что «секунда» не была напечатана. Я предполагаю, что последнее чтение встретило eof и cout, возможно, не был выполнен. Но первое поведение непонятно.

5
задан Daniel Trebbien 13 February 2011 в 00:17
поделиться