c++ - 有没有更好的方法在 c/c++ 中通过环境变量创建路径?

标签 c++ env

在 c/c++ 中通过环境变量创建路径是否有比这更好的方法?

char *S1 = std::getenv("SystemDrive");
char *S2 = std::getenv("USERNAME");
strcat(S1,"\\\\Users\\\\");
strcat(S1,S2);
strcat(S1,"\\\\");
strcat(S1,"Documents");

最佳答案

我建议获取类似这样的用户配置文件目录。

BOOL GetCurrentUserDir(LPTSTR lpszBuf, LPDWORD lpdwBuflen)
{
    HANDLE hProcessToken;

    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &hProcessToken))
        return FALSE;

    if (!GetUserProfileDirectory(hProcessToken, lpszBuf, lpdwBuflen)) {
        CloseHandle(hProcessToken);
        return FALSE;
    }

    CloseHandle(hProcessToken);
    return TRUE;
}

我是这样使用这个函数的:

WCHAR szLocalPath[MAX_PATH];
if (!GetCurrentUserDir(szLocalPath, &cchPath))
{
    //Handle the error
}

然后您可以附加路径的其余部分。

这封装了特定的环境变量并使用了 Win32 API。随着时间的推移,这更有可能保持便携。

关于c++ - 有没有更好的方法在 c/c++ 中通过环境变量创建路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926001/

相关文章:

c++ - 从原始指针(衰减的 C 样式数组)和大小生成 ranges::view

c++ - 如何获取给定 HWND 的工具提示文本?

docker - 在 Dockerfile 中覆盖 FROM 镜像的 ENV

environment-variables - 所有环境变量均以\r 结尾

r - 在 R 中并行处理多个 quant mod 股票代码

bash - 如何将带有空格的变量传递给 env 解释器

c++ - 在 vector 中推回后数字发生变化

c++ - 您如何直接从 Windows 上的物理内存中读取?

c++ - 大圆距离c++

python - Python 中的 sys.executable 和 sys.version 不匹配