【问题标题】:Read ini file in C++ using 64 compiler使用 64 编译器在 C++ 中读取 ini 文件
【发布时间】:2017-05-07 19:42:20
【问题描述】:

我想使用 Visual Studio 的 64 位编译器在 C++ 中读取 ini 文件,而 GetPrivateProfileString() 不适用于 64 位编译器,它只适用于 Win32。 除了使用GetPrivateProfileString()之外,还有什么方法可以读取此类文件??

【问题讨论】:

  • MSDN:“提供此功能只是为了与基于 Windows 的 16 位应用程序兼容。应用程序应将初始化信息存储在注册表中。”您现在可能需要第三方库来读取 ini 文件。
  • 你认识任何人吗?
  • @Rabieh 要求 3rd 方资源是 offf-topic 这里。
  • 为什么你认为你需要一个特殊的函数来读取一个 .ini 文件?这是一个格式非常简单的文本文件。您可能只需通过谷歌搜索就可以找到很多 sn-ps
  • boost::program_options 将从 ini 文件中读取选项。

标签: c++ visual-studio ini


【解决方案1】:

GetPrivateProfileString() 不适用于 64 位编译器,它只适用于 Win32。

这是绝对错误的。几乎所有的 Win32 功能都可作为 64 位版本使用,GetPrivateProfileString 也不例外。如果您无法使其工作,那么您编写的代码是错误的。不幸的是,您没有显示该代码,因此我们无法告诉您如何修复它。

请确保在尝试调用此函数时将完全限定路径传递给文件!相对路径不会产生预期的效果。

但是,无论如何,您可能不应该使用GetPrivateProfileString。正如the documentation 所说:

注意 提供此功能只是为了与基于 Windows 的 16 位应用程序兼容。应用程序应将初始化信息存储在注册表中。

INI 文件有时仍然是一个合理的选择——例如,作为您不想修改注册表的“便携式”应用程序的设置文件——但您仍然不应该使用 Windows @987654327 @API 函数读取和写入这些文件。它们非常古老,直接从 16 位 Windows 移植而来,并且出于向后兼容的原因包含许多意外行为。它们也很慢并且提供的功能非常有限。

虽然有很多选择,但我个人的建议是SimpleINI library。这是跨平台的,使用 C++ 标准库,并已在 MIT 许可下发布。只需将其放入并开始使用它。我工作得很好;我在我的一个 MFC 应用程序中使用它。

You could also use Boost 读取 INI 文件。

【讨论】:

  • 我忘记包含 ,所以这导致了问题。谢谢大家
【解决方案2】:

我还不能发表评论,所以我正在回答。
GetPrivateProfileString() 在 Visual Studio 2015 下的任何平台、Win32 和 x64 以及任何字符集 UNICODE 或 MBCS 上都非常适合我。
仔细检查您的代码,或将其发布以便我们查看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多