Я пытаюсь скопировать изображение в массив символов. Это похоже на пример документации, но работает неправильно. Что случилось с кодом ниже?Почему этот код не копирует изображение в массив символов?
char* getImage(char* path){
ifstream image;
image.open(path, ifstream::binary);
image.seekg (0, ios::end);
int n = image.tellg();
printf("n = %d\n", n);
image.seekg (0, ios::beg);
char* res = new char[n];
image.read(res, n);
if (image)
std::cout << "all characters read successfully." << endl;
printf("length = %d", strlen(res));
cout<<res<<"\n\n";
image.close();
return res;
}
И выход моей программы;
n = 6942
all characters read successfully.
length = 4
Ваше изображение, скорее всего, не является ничейной строкой. 'std :: strlen' просто задыхается от первого нулевого байта, а' std :: cout' также не сможет отобразить ничего значимого. – Quentin
Вы указали вывод своей программы. Это выглядит неплохо. Вы ожидали, что он выведет что-нибудь еще? – anatolyg
Длина изображения - 'n', а не' strlen (res) '. Вот где твоя ошибка. – PaulMcKenzie