我在保存CImage类数据时遇到了问题。以下是我的简要设置:
#include "stdafx.h"
#include <cstring>
#include <atlimage.h>
#include <vector>
#include <stdlib.h>
#include <cmath>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
CImage myimage;
myimage.Create(100,100,24);
// save an image in BMP format
string impath = "image1.bmp";
myimage.Save((LPCTSTR)impath.c_str());
return 0;
}
我在VC ++ 2008下运行它作为WIN32控制台应用程序。没有错误。但是,程序完成后,在我的目录下没有创建文件。我在两台机器上运行了这段代码,结果是一样的。
非常感谢您的时间和精力。
答案 0 :(得分:1)
也许你只是在寻找错误的文件位置。给出一条绝对的道路。相对路径是进程的当前工作目录。如果从调试器运行,它可能是可执行文件的输出目录,项目目录或其他地方。
此外,代替强制转换使用c_str()上的_T
宏 - 以防它需要转换。
如果您仍然无法解决问题,请获取PROCMON(Microsoft的免费实用程序)。运行它并过滤输出,这样它只是查找包含“image1.bmp”的路径的文件 - 它将告诉您使用该路径尝试的所有文件操作以及发生的事情。
答案 1 :(得分:1)
myimage.Save((LPCTSTR)impath.c_str());
1)检查结果
2)你为什么使用铸造?这可以掩盖错误,例如如果您使用UNICODE构建(VS2008中的默认构建),则文件名将无效