У меня есть массив символов, который содержит нулевые символы в случайных местах. Я попытался создать iStringStream с помощью этого массива (encodedData_arr), как показано ниже:Как создать C++ istringstream из массива char с нулевыми (0) символами?
Я использую этот iStringStream для вставки двоичных данных (imagedata Iplimage) в поле BLOB базы данных MySQL (с помощью setBlob (istream *) MySQL Connector/C++)), он сохраняет только символы до первого нулевого символа.
Есть ли способ создать iStringStream с использованием массива char с нулевыми символами?
unsigned char *encodedData_arr = new unsigned char[data_vector_uchar->size()];
// Assign the data of vector<unsigned char> to the encodedData_arr
for (int i = 0; i < vec_size; ++i)
{
cout<< data_vector_uchar->at(i)<< " : "<< encodedData_arr[i]<<endl;
}
// Here the content of the encodedData_arr is same as the data_vector_uchar
// So char array is initializing fine.
istream *is = new istringstream((char*)encodedData_arr, istringstream::in || istringstream::binary);
prepStmt_insertImage->setBlob(1, is);
// Here only part of the data is stored in the database blob field (Upto the first null character)
Почему вы используете 'static_cast' в конструкторе' istream'? Он работает так же хорошо, как это: 'std :: istream (& m)' – mavam
В моем опыте проблемы появляются даже с 'std :: string (data, N)' ... – Yoric