C++ 使用c+;获取%APPDATA%路径+;
我想获取C++ 使用c+;获取%APPDATA%路径+;,c++,visual-c++,C++,Visual C++,我想获取%APPDATA%文件夹的路径 在win 2000和xp中,它位于:C:\Documents and Settings\user name\Application Data 在vista和win7中,它位于:C:\Users\user name\AppData\Roaming 我知道有函数,但它检索BOOL 我想以字符串的形式获取路径。的第三个参数,名为lpszPath,被标记为\uu out 这样做应该可以: // Beware, brain-compiled code ahead!
%APPDATA%
文件夹的路径
在win 2000和xp中,它位于:C:\Documents and Settings\user name\Application Data
在vista和win7中,它位于:C:\Users\user name\AppData\Roaming
我知道有函数,但它检索BOOL
我想以字符串的形式获取路径。的第三个参数,名为lpszPath
,被标记为\uu out
这样做应该可以:
// Beware, brain-compiled code ahead!
wchar_t buffer[MAX_PATH];
BOOL result = SHGetSpecialFolderPath( hWnd
, buffer
, CSIDL_LOCAL_APPDATA
, false );
if(!result) throw "You'll need error handling here!";
std::wcout << buffer;
//当心,brain提前编译了代码!
wchar_t缓冲区[最大路径];
BOOL result=SHGetSpecialFolderPath(hWnd
缓冲器
,CSIDL_LOCAL_APPDATA
,假);
如果(!result)抛出“这里需要错误处理!”;
std::wcout使用这个cout会给出“002BFA00”@Tom:当您编译为Unicode时会发生这种情况;您需要std::wcout
在那里。现在点击TCHAR[MAX\u PATH]->
wchar\u t*`->void*
转换,并打印堆栈缓冲区的地址。只要使用MessageBox
,这就是一个例子。直截了当地说,谢谢你的MSalters。从java到C++的转换根本不容易。有没有关于将其转换为std::string的知识?@Tom:如果您编译为MBCS而不是Unicode,那么您可以直接从缓冲区构造一个std::string。如果你使用Unicode,那么你需要使用StrueFipe来执行转换。谢谢回复DIALMG,现在在我的C++参考书中阅读它。