所以我想要做的就是让路径中的用户名成为运行它的用户。
因此,例如,如果我运行此程序的Windows用户名为Bob,那么我想在Bob的桌面上创建该文件。而不是代码中设置的那个。
我尽可能地解释它,谢谢。
#include <fstream>
#include <ostream>
using namespace std;
int main()
{
std::ofstream fs("C:\\Users/SAMPLE_USERNAME/Desktop/omg it works.txt"); //makes the text file
fs<<"Testing this thing!"; //writes to the text file
fs.close();
return 0;
}
如果有帮助的话,我正在使用Code :: Blocks。
答案 0 :(得分:0)
既然你已经提到了Windows用户,我就是在假设你
想要一个Windows的解决方案。获取用户名可以完成
使用Win32函数SHGetKnownFolderPath
。但请注意
如果您希望您的应用程序支持Windows XP,那么您将
必须使用较旧的(已弃用)函数SHGetFolderPath
。您
可以使用这个样本:
wchar_t *pszDesktopFolderPath;
if(S_OK == SHGetKnownFolderPath(FOLDERID_Desktop, KF_FLAG_DEFAULT, NULL, pszDesktopFolderPath))
{
// pszDesktopFolderPath now points to the path to desktop folder
...
// After you are done with it, delete the buffer for the path like this
CoTaskMemFree(pszDesktopFolderPath);
}
以下是使用SHGetFolderPath
的示例:
LPTSTR pszDesktopFolderPath[MAX_PATH];
if(S_OK == SHGetFolderPathA(NULL, CSIDL_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, pszDesktopFolderPath))
{
// pszDesktopFolderPath now points to the path to desktop folder, no need to manually release memory
}
请注意,第三个参数表示用户的标记 试图获取桌面位置。在您启动应用程序的情况下 将标准用户帐户的权限提升为管理员帐户, 上面提到的函数返回的路径是桌面路径 管理员用户。如果您想获得标准用户的路径,那么 必须获取该用户的令牌并将其作为第三个参数传递。