2010-09-30 4 views
0

Когда я использую std :: ifstream, чтобы открыть файл, который был записан в формате dos, ifstream, похоже, не может правильно открыть файл, поскольку Я вызываю good() в потоке, после чего он терпит неудачу (возвращает false). Я попытался открыть файл в двоичном режиме, а также по умолчанию в режиме «in» и не работал. Если я конвертирую файл в unix с помощью dos2unix, все работает отлично.Можно ли читать файлы dos в linux с помощью ifstream

Целью этого является то, что я хочу, чтобы иметь возможность читать файл и анализировать его, но я не могу гарантировать, что файл не был сохранен в формате dos (Windows) или unix (Linux). В идеале я хотел бы иметь возможность использовать ifstream.

Любые предложения?

Спасибо!

+0

@Chubsdad: Почему вы редактируете сообщение так, чтобы регулярные предложения фиксированной ширины? Форматирование с фиксированной шириной полезно для (и предназначенных в основном для) фрагментов кода и связанного текста, а не для случайных предложений ... –

+0

@James McNellis: Я хотел выделить эту часть, относящуюся к «dos2unix». Как я должен был это сделать? – Chubsdad

+1

Почему бы вам не опубликовать код, который вы используете, чтобы открыть файл и проверить состояние потока? –

ответ

1

Формат файла NOT влияет на вашу способность открывать его.

Скорее всего, ваш путь неправильный.

+0

Это сообщение о Ctrl + M персонажах? в сообщении также упоминается, что doosunix отлично работает. Значит, речь идет не о пути. Выделено сообщение должным образом – Chubsdad

+0

Символ Ctrl-M не повлияет на работу ifstream. Скорее всего, имя файла было изменено с плохого имени на доброе имя. Учитывается ли регистр файловой системы? –

1

Кажется крайне маловероятным, что GCC будет делать такую ​​вещь.

Я предлагаю сделать my_ifstream.exceptions(ios::failbit | ios::badbit); перед его открытием и работать в отладчике. Тогда вы можете увидеть, где это перестало быть хорошим.

Кроме того, открытие файла в двоичном режиме (ios::in | ios::binary) должно исключать любую возможность реализации, зависящую от содержимого файла.

Смежные вопросы