почему вектор gzwrite отличается от массива gzwrite со значением массива одинаковым? - PullRequest
0 голосов
/ 10 ноября 2019

Я помещаю одинаковые значения в разные контейнеры (вектор и массив) и gzwrite их с помощью zlib lib, но результат различен.

функция gzwrite для записи беззнакового char [] в файл gz

gzFile fi = gzopen(geopath, "wb");
unsigned char a[]= { 'n','h','h' };
vector<unsigned char> b({ 'n','h','h' });
gzwrite(fi, a, size(a));
//gzwrite(fi,&b, size(b));
gzclose(fi);

запись массива, вывод: вектор записи 6E6868 (ожидаемый результат), вывод: 00AF27

1 Ответ

1 голос
/ 10 ноября 2019
vector<unsigned char> b({ 'n','h','h' });
gzwrite(fi,&b, size(b));

Здесь вы берете указатель на всю переменную b, которая содержит внутренние поля размера и емкости std::vector.

. Вместо этого используйте gzwrite(fi, b.data(), size(b));.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...