【问题标题】:Using an ini file without Unicode使用没有 Unicode 的 ini 文件
【发布时间】:2014-07-31 12:36:24
【问题描述】:

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

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

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

【问题讨论】:

  • WIN32 API 中几乎每个函数都有两个版本:一个用于窄字符,一个用于宽字符。我敢打赌 ini 文件的功能是一样的。
  • 致电GetPrivateProfileStringA。注意末尾的A,表示“ASCII”。
  • 不要使用遗留的 INI api 函数,它们仅可用于移植一个古老的代码库。它们非常昂贵,加载单个 INI 参数大约需要 50 毫秒。而且它们确实支持 Unicode,即使函数签名表明它们支持。 INI 文件内容本身总是在假设默认系统代码页的情况下被读取,就像 25 年前所做的那样。
  • @HansPassant 我没有使用注册表来制作一个小型便携式实用程序,在典型使用期间只需加载几个参数。

标签: c++ winapi unicode ascii


【解决方案1】:

.INI 文件是非常古老的东西。它们在引入 Unicode 之前已经存在了几十年。它们是简单的 ASCII 文件。大量的应用程序(包括我的)正在使用简单的 ASCII Api 与它们一起工作,例如 GetPrivateProfileString

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2012-10-09
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2014-01-07
    相关资源
    最近更新 更多