В настоящее время я пытаюсь перенести код с разбора файла с помощью FILE в стиле C * на поток istringstream в стиле C ++.Моя программа работает параллельно, и я хотел бы: 1) прочитать файл только на первом ЦПУ, 2) передать содержимое в строковой форме всем другим ЦП и 3) попросить каждый ЦП проанализировать строку.
Старая версия синтаксического анализатора по существу делает следующее:
while (!done) {
int c = fgetc(infile);
if (EOF == c) {
if (ferror(infile)) {
// throw some error
}
return;
}
// continue parsing
}
infile - это ФАЙЛ *.Моя попытка конвертировать код теперь выглядит следующим образом:
while (!done) {
char cchar = iss.get(); int c = int(cchar);
if (EOF == c) {
if ((iss.rdstate() & ifstream::failbit ) != 0 ) {
// throw some error
}
return;
}
// continue parsing
}
iss - istringstream.Проблема в том, что в настоящее время ошибка всегда выдается в версии C ++ при достижении EOF.Так что у меня нет правильного аналога ferror.Кто-нибудь может мне помочь с этим?
Себастьян