我正在使用Visual Studio 2008中的C ++处理旧应用程序中的一段代码。它试图从INI文件中读取一些值,并且我试图在以下情况下进行一些错误处理。我试图阅读的部分或密钥在文件中不存在。
以下是代码段:
int nValue = GetPrivateProfileInt (SECTION, KEY, -1, sINIFile);
if(nValue == -1) // default value
{
int nLastError = GetLastError();
if(nLastError != 0)
{
// do something
}
}
sINIFile包含我所需的INI文件的完整路径。
经过一些测试后,我发现GetLastError()返回2(ERROR_FILE_NOT_FOUND),如果:
文件不存在或,
该部分不存在或,
密钥不存在。
我想知道GetPrivateProfileInt返回默认值的具体原因 - 这可能吗?
注意:我已经考虑过检查“错误”的价值。 (或错误,如MSDN页面上所述)但对于上述任何情况,此值始终为0。
答案 0 :(得分:2)
如果GetLastError()无效,那么你需要做一些侦探工作。您应该检查自己是否存在注册表项或文件(您知道大多数ini文件是否已映射到注册表,对吗?),或者如果该部分不存在(GetPrivateProfileSection),并且如果这两个文件都不适用,那么密钥不存在。