Не удается загрузить изображение CImg с пробелами в имени пути

У меня есть приложение на C ++, которое я разрабатываю для сканирования изображения и возврата координат, все приложение работает, как и ожидалось, за исключением этой последней проблемы, которую я не могу понять. пользователь загружает изображения в папку, а затем изображения запускаются по очереди в приложение в очереди. Проблема в том, что у нас тысячи пользователей со многими папками, и многие из них загружают папку / файлы с пробелом (например, «») в папку / имя файла.

При запуске приложения происходит сбой, я сузил его до того факта, что CImg не любит пробелы в пути.

Каждый раз, когда он запускается на моей локальной машине с пробелом в пути, я получаю следующую ошибку, которая, кажется, не говорит о многом.

Необработанное исключение в 0x00BE05F7 в jpeg-info.exe: 0xC00000FD: переполнение стека> (параметры: 0x00000000, 0x00242000).

[CImg] * CImgIOException * [instance (0,0,0,0,00000000, без общего доступа)] CImg :: load (): Не удалось открыть файл ‘J: \ uploads \ 41039 \ test name’

[CImg] * CImgIOException * cimg :: fopen (): не удалось открыть файл ‘J: \ uploads \ 41039 \ test name’ в режиме ‘rb’.

строка кода, на которой он не работает, находится здесь.

const char* imagePath = filename.c_str();
CImg<unsigned char> loadImage(imagePath);

Мне просто нужно найти способ передать путь к CImg с пробелами в строке, и он не прерывается.

Sidenote: У меня установлена ​​файловая система boost, если это облегчает поиск решения.

РЕДАКТИРОВАТЬ:

Я получил имя файла двумя разными способами, но мне не повезло с решением этой проблемы.

оригинальный способ: (передавая const char напрямую)

const char* filename = cimg_option("-i", "path/to/file/jpeg.jpg", "input jpeg path");

новый способ: (захват пути и использование boost для правильного форматирования)

const char* getInput = cimg_option("-i", "path/to/file/jpeg.jpg", "input jpeg path");
std::string filename = boost::filesystem::absolute(getInput).string();

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector