不存在从 "CString" 到 "char *" 的适当转换函数求教解决思路
不存在从 "CString" 到 "char *" 的适当转换函数求教
原来代码里面是COPini::WriteString("配置信息", "厚度", P[0],“setinfo.ini”)
这样可直接在指定目录下生成setinfo.ini配置文件
现在我是想把系统时间作为文件名来保存但是直接这样弄不行,我也查了很多资料有人说用下面这些方法把CString转换为char*
我是想把系统时间作为文件名来保存但是直接这样弄不行,我也查了很多资料有人说用下面这些方法把CString转换为char*
1.传给未分配内存的const char* (LPCTSTR)指针.
CString cstr(asdd);
const char* ch = (LPCTSTR)cstr;
ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
2.传给未分配内存的指针.
CString cstr = "ASDDSD";
char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
cstr.ReleaseBuffer();
//修改ch指向的值等于修改cstr里面的值.
//PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把CString 值赋给已分配内存的char *。
CString cstr1 = "ASDDSD";
int strLength = cstr1.GetLength() + 1;
char *pValue = new char[strLength];
strncpy(pValue, cstr1, strLength);
之后试过转换类型还是不行
那个大神能帮我解决下
------解决方案--------------------
原来代码里面是COPini::WriteString("配置信息", "厚度", P[0],“setinfo.ini”)
这样可直接在指定目录下生成setinfo.ini配置文件
现在我是想把系统时间作为文件名来保存但是直接这样弄不行,我也查了很多资料有人说用下面这些方法把CString转换为char*
CTime t = CTime::GetCurrentTime();
CString tm = t.Format("'%Y/%m/%d-%H/%M/%S'");
tm =tm + ".ini";
COPini::WriteString("配置信息", "厚度", P[0],tm)//tm的参数类型为char *;
我是想把系统时间作为文件名来保存但是直接这样弄不行,我也查了很多资料有人说用下面这些方法把CString转换为char*
1.传给未分配内存的const char* (LPCTSTR)指针.
CString cstr(asdd);
const char* ch = (LPCTSTR)cstr;
ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
2.传给未分配内存的指针.
CString cstr = "ASDDSD";
char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
cstr.ReleaseBuffer();
//修改ch指向的值等于修改cstr里面的值.
//PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把CString 值赋给已分配内存的char *。
CString cstr1 = "ASDDSD";
int strLength = cstr1.GetLength() + 1;
char *pValue = new char[strLength];
strncpy(pValue, cstr1, strLength);
之后试过转换类型还是不行
CTime t = CTime::GetCurrentTime();
CString tm = t.Format("'%Y/%m/%d-%H/%M/%S'");
tm =tm + ".ini";
CString time(tm);
char *pvalue =(LPTSTR)(LPCTSTR)tm;
COPini::WriteString("配置信息", "厚度", P[0],pvalue)
那个大神能帮我解决下
------解决方案--------------------
CTime t = CTime::GetCurrentTime();
char szPath[MAX_PATH] = {0};
StringCchPrintfA(szPath, _countof(szPath), "%04d%02d%02d-%02d%02d%02d", t.GetYear(), t.GetMonth(), t.GetDay(), t.GetHour(), t.GetMinute(), t.GetSecond());
COPini::WriteString("配置信息", "厚度", P[0], szPath)