【发布时间】:2014-09-19 08:35:29
【问题描述】:
我在 C++、Visual Studio 2012 中有一个 win32 控制台应用程序。我无法从 ini 文件中获取配置参数。我尝试了文件路径的不同可能性,例如将 .ini 文件放在源文件夹中,将完整路径写入 is,将生成的 .exe 文件放在文件夹中。执行 .exe 文件后控制台上的输出在每种情况下都是 0 或(空)字符串。我做错了什么?如何读取参数?
v1:
LPCTSTR path = L".\\config.ini";
TCHAR protocolChar[32];
int port = GetPrivateProfileString(_T("PORT"), _T("SETTINGS"), _T(""), protocolChar, 32, path);
printf("***%d***\n", port);
v2:
int port = GetPrivateProfileInt(_T("PORT"), _T("SETTINGS"), 0, _T("config.ini"));
config.ini 包含:
[SETTINGS]
USER_NUM_MAX = 256 ; Maximum number of users
PORT = 8080;
【问题讨论】:
-
用
%s打印int将是一个问题。并且您确定该文件位于进程的当前工作目录 中?如果从 IDE 运行,您会意识到默认 CWD 是 project 文件所在的位置(vcprojx 文件),对吗? -
哦,因为我有不同的参数我没有在这里写正确的类型。对于 int,我使用 %d。是的,我在 ProjName.vcxproj、ProjName.vcxproj.filter、ProjName.aps、ProjName.rc 的文件夹中有 ini 文件。这样对吗?我现在将ini文件放在每个文件夹中:)。我不工作。
-
如果它与 vcprojx 文件在同一个文件夹中,它是正确的。也许验证您甚至可以打开文件。 (std::ifstream)
-
这是个好主意,但使用#include
无法编译。 -
奇怪?什么样的 C++ 编译器不能
#include <fstream>?让我猜,这段代码在一个 .c 文件中。
标签: c++ visual-studio-2012 configuration-files