Я реализовал компрессор LZW, который кодирует строки в целые числа с помощью хэш-функции. Я сохранил закодированную строку в текстовом файле. Теперь мне нужно разложить тот же код. Я смущен, как различать двухзначное целое и однозначное целое число при чтении из текстового файла.Чтение целых чисел из файла C++
Например, мой словарь:
0 c
1 bba
3 aa
5 ac
7 bb
8 aab
9 a
10 b
и так далее.
Теперь предположим, что я закодировал строку «aaabbbac» в «9 3 10 7 9 0», которая хранится в текстовом файле как 9310790. Как отличить 0, 1 и 10 при чтении из файла?
Если они хранятся именно так (а не в двоичном виде с каждым как байт), то вы не можете отличить без разделителя. – matsjoyce
Почему вы не храните их как фактические целые числа (а не строку, представляющую целое число) – Borgleader
Обычно в программе сжатия вы не пишете текст и не записываете двоичные байты, вы пишете поток * бит * (ваши границы кода делают не падать на границы байтов). Битовая ширина следующего значения для считывания определяется состоянием декодера. –