У меня проблема с чтением моего двоичного файла. Когда я читаю двоичный файл, содержащий строки, он отлично читается. Но когда я пытаюсь читать файл, который выглядит примерно так:Чтение двоичного файла int в строку C++
1830 3030 3030 3131 3031 3130 3000 0000
0000 0000 0000 0000 1830 3030 3030 3131
3030 3030 3100 0000 0000 0000 0000 0000
1830 3030 3030 3131 3030 3131 3000 0000
0000 0000 0000 0000 1830 3030 3030 3131
3031 3030 3000 0000 0000 0000 0000 0000
1830 3030 3030 3131 3031 3131 3100 0000
0000 0000 0000 0000 1830 3030 3030 3131
3130 3130 3100 0000 0000 0000 0000 0000 ... and so on
он читает только его часть. Это мой код для чтения и преобразования двоичного файла в строку.
string toString (const char *c, int size);
int main(int argc, char* argv[])
{
streampos size;
char * memblock;
ifstream file (argv[1], ios::in|ios::binary|ios::ate);
size = file.tellg();
memblock = new char[size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();
string input = toString(memblock,size);
cout << input << endl; //this prints just portion of it 000001101100
return 0;
}
string toString (const char *c, int size)
{
string s;
if (c[size-1] == '\0')
{
s.append(c);
}
else
{
for(int i = 0; i < size; i++)
{
s.append(1,c[i]);
}
}
return s;
}
Но когда я пытаюсь читать txt-файл 0 и 1, он читается просто отлично. Я довольно новичок в C++, и я не совсем уверен, почему это так.
Если вы сообщите нам, как вы хотите, чтобы на выходе были предоставлены эти данные, мы, вероятно, можем написать код для вас, чтобы показать вам, как это сделать. –
Также кажется, что вы не освобождаете память, выделенную для переменной memblock. – kyku
hmm ... Я действительно получаю этот файл от сжатия другого .bin-файла с помощью LZW. Когда я сжимаю его до .bin, я получаю 1830 3030 3030 3131 ... но когда он сжат до .txt, я получаю 000001101100. Так что часть .bin такая же, как в .txt. Когда я распаковываю файл .txt, я получаю оригинал без каких-либо ошибок. Но я не могу распаковать .bin, потому что есть только его часть. Я думал, что что-то было с чтением, и что он читает только блок этого. – mihcc