我正在尝试接收项目的当前目录。一段时间后,我找到了函数 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="js/three.js"></script>
<script>
var x = new THREE.
</script>
</head>
<body>
</body>
</html>
,它似乎有效,但它只适用于wchar_T,对我来说,这会使事情变得复杂一些。
这是我的代码:
GetCurrentDirectory
正如您所看到的,我正在尝试将其他文本附加到当前工作目录的占位符,但它不起作用。如何成功获取当前目录,同时还能够在该目录中附加文件名,我该怎么办?如果可能的话,我也希望能够使用int main()
{
TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH, pwd);
MessageBox(NULL, pwd, pwd, 0);
std::wcout << pwd + "\\filename.so" << '\n';
}
,我的意思是为什么目录甚至存储为宽字符?所有符号都有效吗?
哦,我正在使用Visual Studio :)
答案 0 :(得分:1)
std::wcout << pwd + "\\filename.so" << '\n';
在使用+
运算符时,您不会连接两个字符串。相反,您将两个指针添加在一起。你需要做的是放弃TCHAR
和char数组。相反,请始终使用std::wstring
。
此外,请使用Win32调用的Wide(W)版本。
int main()
{
wchar_t pwd[MAX_PATH];
std::wstring finalPwd;
GetCurrentDirectoryW(MAX_PATH, pwd);
finalPwd.assign(pwd);
MessageBoxW(NULL, finalPwd.c_str(), finalPwd.c_str(), 0);
std::wcout << finalPwd + L"\\filename.so" << '\n';
}
这种方法的缺点是您需要始终在API边界将wstring
转换为wchar_t
,反之亦然。但除了编写一些包装函数之外,你无能为力。