LINUX.ORG.RU

[c++][полтергейст?]unsigned char to std::string

 


0

1

Пытаюсь на С++ использовать miniLZO

unsigned char *in = (unsigned char*) malloc (sizeof(char)*str.length());
	unsigned char *out = (unsigned char*) malloc (sizeof(char)*str.length()*100);
	memcpy(in,str.c_str(),str.length());
	unsigned long out_len;

	int r = lzo1x_1_compress(in,str.length(),out,&out_len,wrkmem);

	/*std::ofstream file("000.txt", std::ios::out|std::ios::binary);
    file.write((char*)out,out_len);
    file.close();
	*/

	char *st = (char*) malloc (sizeof(char)*out_len);
	//memcpy(st,out,out_len);

	string data =(char*)out;

собственно какова проблема - никаким образом немогу после сжатие получить данные назад в char* или string. даже memcpy не помогает. когда просто печатаю содержимое out в файлик - отлично всё получаю.

обратная процедура (декомпрессия) прекрасно возвращает данные всеми вышеопробованными способами. Где я дурак?, помоги ночной лор!



Последнее исправление: Borman3000 (всего исправлений: 1)

string data =(char*)out;

там же нули могут быть, так что лучше так:

string data(out, out_len);
dmage
()

ты пытаешься сделать глупость, сжатые данные надо хранить в vector

anonymous
()

> unsigned long out_len;

ЕМНИП, out_len должна изначально содержать размер буфера out, а после выполнения распаковки она либо будет установлена в реальный размер распакованных данных, либо ф-ция вернёт ошибку…

arsi ★★★★★
()

А что не brieflz или quicklz?

GAMer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.