.ini文件是windows程序的配置文件,其结构为:
;以分号开头的行为注释行 ;[]括起来的行为章节名,后续的”key-value对“都属该章节 [section 1] ;等号前面的相当于key,等号后面的相当于value User Name=John User Id=1 [section 2] Position=Position 1
相关函数均位于Winbase.h中,函数命名上均包含***PrivateProfile***,例如:GetPrivateProfileInt(),意思是读取.ini文件中的一个整数。
- 从动作上分成两类:
- PrivateProfile前面的是Get,都是读取
- PrivateProfile前面的是Write,都是写入
- 从操作对象上分成5类:
- PrivateProfile后面的是Int,表示读出指定章节的指定key对应的整数
- PrivateProfile后面的是Section,表示读出的是指定章节的所有key-value对
- PrivateProfile后面的是SectionNames,表示读出的是所有的章节名
- PrivateProfile后面的是String,表示读出的是指定章节、指定key的value
- PrivateProfile后面的是Struct,表示按照一定的结构,将指定章节的所有key对应的value一并读出来
- 常用参数命名的含义,例如
UINT GetPrivateProfileInt( LPCTSTR lpAppName, //指定的章节名 LPCTSTR lpKeyName, //指定的key INT nDefault, //如果未发现这个key,返回该缺省值 LPCTSTR lpFileName //.ini文件的绝对路径+文件名。这里要注意:必须是.ini文件的绝对路径+文件名.ini );
读取函数列表:
GetPrivateProfileInt Retrieves an integer associated with a key in the specified section of an initialization file. |
GetPrivateProfileIntA Retrieves an integer associated with a key in the specified section of an initialization file. |
GetPrivateProfileIntW Retrieves an integer associated with a key in the specified section of an initialization file. |
GetPrivateProfileSection Retrieves all the keys and values for the specified section of an initialization file. |
GetPrivateProfileSectionA Retrieves all the keys and values for the specified section of an initialization file. |
GetPrivateProfileSectionNames Retrieves the names of all sections in an initialization file. |
GetPrivateProfileSectionNamesA Retrieves the names of all sections in an initialization file. |
GetPrivateProfileSectionNamesW Retrieves the names of all sections in an initialization file. |
GetPrivateProfileSectionW Retrieves all the keys and values for the specified section of an initialization file. |
GetPrivateProfileString Retrieves a string from the specified section in an initialization file. |
GetPrivateProfileStringA Retrieves a string from the specified section in an initialization file. |
GetPrivateProfileStringW Retrieves a string from the specified section in an initialization file. |
GetPrivateProfileStruct Retrieves the data associated with a key in the specified section of an initialization file. |
GetPrivateProfileStructA Retrieves the data associated with a key in the specified section of an initialization file. |
GetPrivateProfileStructW Retrieves the data associated with a key in the specified section of an initialization file. |
写入函数列表:
WritePrivateProfileSectionA Replaces the keys and values for the specified section in an initialization file. |
WritePrivateProfileSectionW Replaces the keys and values for the specified section in an initialization file. |
WritePrivateProfileStringA Copies a string into the specified section of an initialization file. |
WritePrivateProfileStringW Copies a string into the specified section of an initialization file. |
WritePrivateProfileStructA Copies data into a key in the specified section of an initialization file. As it copies the data, the function calculates a checksum and appends it to the end of the data. |
WritePrivateProfileStructW Copies data into a key in the specified section of an initialization file. As it copies the data, the function calculates a checksum and appends it to the end of the data. |
例如:test.ini文件内容如下
;[Sql Server] section define the argument of Database connection string. [Sql Server] SqlServerIP=192.168.1.1 SqlServerPort=1433 InstanceName=QC Database=Test UserId=** Password=**** ;[TCP Server] section define the argument of TCP Server. [Tcp Server] TcpServerPort=5000 TcpLiseningAmount=30 ;Log File is the path and filename used to record information when Tcp Server running. [Log] LogFileName=d:\log.txt
读取相关参数的代码片段:(test.ini与test.exe位于同一目录下)
#include <Windows.h> #include <filesystem> #include <string> ...... //m_buffer是已分配内存的字符串指针 std::string currentPath = std::filesystem::current_path().string() + "\\test.ini" ; GetPrivateProfileStringA("Sql Server", "SqlServerIP", "192.168.1.2", m_buffer, 255, currentPath.c_str());