C++的库提供了现成的读取.ini文件的API:GetPrivateProfileInt和GetPrivateProfileString,具体上网查。
我的调用如下:
int port = GetPrivateProfileInt(L"PORT", L"port", 5555, L".\\test.ini");
test.ini文件内容如下:
[PORT]
port=8888
但是port始终为5555,而不是文件里的8888
我本以为可能是斜杠写反了之类的问题,也有可能是斜杠只写了一个的问题,反反复复改了几遍,仍然无果。直到在某帖子里看到ini文件的编码格式为ANSI才能被正确读取,才算找到了解决方法。
该函数使用需要注意的问题如下:
1、斜杠写两道,而且是\不是/。在文件夹路径中用的就是\,粘贴进程序需要多加一道。
2、我上边ini文件用的是相对路径,这个相对是相对于真正调用到它的cpp而言的。我这个语句写在一个最终封装为dll输出的A.cpp中,在另外一个B.cpp中调用该dll的接口,那么按照我的相对路径,我的test.ini应该放在B.cpp的同级目录下,而不是A.cpp。
3、就是上面的编码格式问题。值得注意的是,前不久我在写一个Flash读取txt文件的程序时,也遇到了编码问题。txt默认保存为ANSI格式,而Flash读取需要读UTF-8格式,所以这和本题正好相反。切记切记。