Хотя я подозреваю, что знаю ответ, мне будут интересны ответы людей.
В настоящее время у меня есть приложение VC6, работающее на W2K3, которое читает текстовый файл с использованием следующего (упрощенный код):
string line;
ifstream infile("test.txt",ios::in);
while (!infile.eof())
{
getline(infile,line);
}
...
Каждая запись в файле имеет поля, разделенные каналом, и код работает нормально благодаря CRLF, хотя поля и записи не имеют фиксированной длины.Теперь проблема в том, что файл будет двоичным из-за того, что некоторые данные упакованы в десятичный формат без знака в дополнение к тексту.По сути, является ли приведенный выше код действительным, если он открыт в виде двоичного файла (разделители и LF сохраняются)?Я попытался провести быстрый тест с некоторыми фиктивными данными, и он, по-видимому, вел себя одинаково.
Насколько я понимаю, двоичные файлы читаются с учетом содержимого данных, поэтому байты могут быть правильно извлечены и безLF-х.Я искал в Интернете и нашел различные варианты C ++ и других языков .NET (опция), но ни одна из них не способна читать по одной строке за раз - даже если данные переменного размера и LF, кажется, не справляются с задачейиспользуя бинарный файл - и я не хочу читать весь файл за один раз, так как он может быть довольно большим (в надежде также не читать по одному символу за раз).
Итак, если вышеприведенное может быть верным, существует ли риск потери данных?Если это не так, другие варианты будут оценены.И если я что-то упустил, пожалуйста, уточните.