关于LPSTR、LPCSTR 跟 LPTSTR、LPCTSTR和CString
关于LPSTR、LPCSTR 和 LPTSTR、LPCTSTR和CString
void fun(CString &strTempPath)
{
GetTempPath(_MAX_PATH, (LPTSTR)(LPCTSTR)strTempPath); //得到系统temp文件夹目录
if (strTempPath.IsEmpty()) return;
//判断目录是否以反斜杠结尾
int nPos = strTempPath.ReverseFind(TCHAR('\\'));
//加入反斜杠
if (-1 == nPos || nPos != strTempPath.GetLength()-1)
strTempPath+= _T("\\");
}
为啥执行完GetTempPath(_MAX_PATH, (LPTSTR)(LPCTSTR)strTempPath);的时候strTempPath是有值的,
但是if (strTempPath.IsEmpty()) return;这边它又会退出呢?
补充下:GetTempPath(DWORD..., LPTSTR...)这个API函数的第二个参数是LPTSTR类型的
该如何做呢?
一定要
char csTempPath[_MAX_PATH];
GetTempPath(_MAX_PATH, csTempPath);
strTempPath.Format(_T("%s"), csTempPath);
这样写吗?
有没有其它的方法可以直接使用strTempPath这个变量操作的
哪位大哥知道的告诉我下,谢谢
如果可以的话把CString的以它们之间的转换也贴给我,谢谢
------解决方案--------------------
该如何做呢?
一定要
char csTempPath[_MAX_PATH];
GetTempPath(_MAX_PATH, csTempPath);
strTempPath.Format(_T("%s"), csTempPath);
这样写吗?
有没有其它的方法可以直接使用strTempPath这个变量操作的
可以的,CString的设计者很厉害,很多以前用字符串(字符数组)去做的工作,现在都可以用CString来代劳,但我们一定要理解工作原理.
void fun(CString &strTempPath)
{
GetTempPath(_MAX_PATH, (LPTSTR)(LPCTSTR)strTempPath); //得到系统temp文件夹目录
if (strTempPath.IsEmpty()) return;
//判断目录是否以反斜杠结尾
int nPos = strTempPath.ReverseFind(TCHAR('\\'));
//加入反斜杠
if (-1 == nPos || nPos != strTempPath.GetLength()-1)
strTempPath+= _T("\\");
}
为啥执行完GetTempPath(_MAX_PATH, (LPTSTR)(LPCTSTR)strTempPath);的时候strTempPath是有值的,
但是if (strTempPath.IsEmpty()) return;这边它又会退出呢?
补充下:GetTempPath(DWORD..., LPTSTR...)这个API函数的第二个参数是LPTSTR类型的
该如何做呢?
一定要
char csTempPath[_MAX_PATH];
GetTempPath(_MAX_PATH, csTempPath);
strTempPath.Format(_T("%s"), csTempPath);
这样写吗?
有没有其它的方法可以直接使用strTempPath这个变量操作的
哪位大哥知道的告诉我下,谢谢
如果可以的话把CString的以它们之间的转换也贴给我,谢谢
------解决方案--------------------
该如何做呢?
一定要
char csTempPath[_MAX_PATH];
GetTempPath(_MAX_PATH, csTempPath);
strTempPath.Format(_T("%s"), csTempPath);
这样写吗?
有没有其它的方法可以直接使用strTempPath这个变量操作的
可以的,CString的设计者很厉害,很多以前用字符串(字符数组)去做的工作,现在都可以用CString来代劳,但我们一定要理解工作原理.
- C/C++ code
CString strTempPath; GetTempPath(_MAX_PATH,strTempPath.GetBuffer(_MAX_PATH)); strTempPath.ReleaseBuffer(); if (strTempPath.IsEmpty()) { }