gpt4 book ai didi

c++ - 如何获取 %AppData% 路径作为 std::string?

转载 作者:可可西里 更新时间:2023-11-01 11:17:14 24 4
gpt4 key购买 nike

我读到可以使用 SHGetSpecialFolderPath(); 获取 AppData 路径。但是,它返回一个 TCHAR 数组。我需要一个 std::string

如何将它转换为 std::string

更新

我读到可以使用 getenv("APPDATA"),但它在 Windows XP 中不可用。我想支持 Windows XP - Windows 10。

最佳答案

T type 表示 SHGetSpecialFolderPath是一对函数:

  • SHGetSpecialFolderPathA适用于 Windows ANSI 编码 char基于文本,以及

  • SHGetSpecialFolderPathW对于 UTF-16 编码 wchar_t基于文本,Windows 的“Unicode”。

ANSI 变体只是 Unicode 变体的包装器,它不能逻辑上在所有情况下都产生正确的路径。

但这就是您需要用于 char 的内容基于数据。


另一种方法是使用该函数的 wide 变体,并使用您熟悉的任何机制将宽文本结果转换为面向字节的 char基于您选择的编码,例如UTF-8。

请注意,UTF-8 字符串不能直接用于通过 Windows API 打开文件等,因此这种方法涉及更多转换,只是为了使用字符串。


但是,我建议在 Windows 中切换到宽文本。

为此,定义宏符号UNICODE在包括 <windows.h> 之前.

这也是 Visual Studio 项目中的默认设置。

关于c++ - 如何获取 %AppData% 路径作为 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com