处理这些疯狂的字符串和数组让我很头疼......
到目前为止,这是我的代码
wchar_t mypath[MAX_PATH];
wchar_t temppath[MAX_PATH];
GetModuleFileName(0, mypath, MAX_PATH);
GetTempPath(MAX_PATH, temppath);
CreateDirectory(???, NULL);
前两个Windows API函数使用LPWSTR变量。第三个使用LPCWSTR。有什么主要区别?在我获得TEMP目录的路径后,我想在其中创建一个名为“test”的新目录。这意味着我需要将(L“test”)追加到我的“temppath”变量中。有人可以给我一些关于如何使用这些数组的技巧。这就是让C ++变得痛苦的原因。为什么不能每个人都只选择一种数据类型的字符串。 wchar_t如何有用?这很难使用和操纵。
谢谢你们!
答案 0 :(得分:5)
前两个Windows API函数使用LPWSTR变量。第三个使用LPCWSTR。主要区别是什么?
LPCWSTR
是const
的{{1}}版本:
我想在其中创建一个名为" test"的新目录。这意味着我需要将(L" test")附加到我的" temppath"变量
typedef wchar_t* LPWSTR, *PWSTR;
或只是std::wostringstream wos;
wos << temppath << L"\\test";
std::wstring fullpath(wos.str());
(如评论中的克里斯所建议):
std::wstring
生成连接版本。然后使用std::wstring fullpath(std::wstring(temppath) + L"\\test");
作为c_str()
的参数:
CreateDirectory()
答案 1 :(得分:4)
使用PathCombine()
,例如:
wchar_t temppath[MAX_PATH+1] = {0};
GetTempPath(MAX_PATH, temppath);
wchar_t mypath[MAX_PATH+8] = {0};
PathCombineW(mypath, temppath, L"test");
CreateDirectoryW(mypath, NULL);