C++ 使用不带Unicode的ini文件

C++ 使用不带Unicode的ini文件,c++,winapi,unicode,ascii,C++,Winapi,Unicode,Ascii,WinAPI或其他文件中是否有任何规定可以在大多数情况下使用ini文件(或类似样式的配置文件),而不必使用LPCWSTR 我的应用程序始终使用单宽ASCII字符串,我刚刚开始阅读ini文件。事实证明,Unicode字符串很难处理和转换 如果我找不到非常简单的东西,我想我会使用fstream并完成它。.INI文件是非常旧的东西。在引入Unicode之前,它们已经存在了几十年。它们是简单的ASCII文件。数以吨计的应用程序(包括我的)正在使用简单的ASCII Api,如GetPrivateProfi

WinAPI或其他文件中是否有任何规定可以在大多数情况下使用ini文件(或类似样式的配置文件),而不必使用LPCWSTR

我的应用程序始终使用单宽ASCII字符串,我刚刚开始阅读ini文件。事实证明,Unicode字符串很难处理和转换


如果我找不到非常简单的东西,我想我会使用fstream并完成它。

.INI文件是非常旧的东西。在引入Unicode之前,它们已经存在了几十年。它们是简单的ASCII文件。数以吨计的应用程序(包括我的)正在使用简单的ASCII Api,如
GetPrivateProfileString


如果应用程序使用Unicode默认值,则可以显式编写
GetPrivateProfileStringA
。这将强制其所有参数都是简单字符串。

WIN32 API中几乎每个函数都有两个版本:一个用于窄字符,一个用于宽字符。我敢打赌ini文件函数是相同的。调用
GetPrivateProfileStringA
。请注意结尾处的
A
表示“ASCII”。的可能重复项不使用旧的INI api函数,它们仅可用于移植旧的代码库。它们非常昂贵,加载单个INI参数大约需要50毫秒。而且它们不支持Unicode,即使函数签名表明它们支持Unicode。INI文件内容本身总是以默认的系统代码页读取,就像25年前一样。@HansPassant我没有使用注册表来制作一个小型的、可移植的实用程序,在典型使用过程中只需加载几个参数。