CImg加载图像失败,路径名中有空格

时间:2013-09-13 16:53:15

标签: c++ boost-filesystem cimg

我正在开发一个C ++应用程序来扫描图像并返回坐标,整个应用程序按预期工作,除了这个我似乎无法弄清楚的最后一个问题。用户将图像上载到文件夹,然后图像一次一个地运行到队列中的应用程序。问题是,我们有成千上万的用户拥有许多文件夹,并且有相当数量的用户在文件夹/文件名中上传带有空格(例如“”)的文件夹/文件。

当应用程序运行崩溃时,我已将其缩小到CImg不喜欢路径中的空格这一事实。

每次它在我的本地计算机上运行时,路径中都有一个空格,我得到以下错误,这似乎没什么用。

  

jpeg-info.exe中0x00BE05F7处的未处理异常:0xC00000FD:堆栈溢出>(参数:0x00000000,0x00242000)。

     

[CImg] * CImgIOException * [instance(0,0,0,0,00000000,non-shared)] CImg :: load():无法打开文件'J:\ uploads \ 41039 \ test name'

     

[CImg] * CImgIOException * cimg :: fopen():无法以模式'rb'打开文件'J:\ uploads \ 41039 \ test name'。

它失败的代码行就在这里。

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

我只需要找出一种方法将一个路径传递给CImg,并在字符串中添加空格,但不会中断。

旁注:我确实安装了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();

0 个答案:

没有答案