CIni文件读写
- 格式:doc
- 大小:37.00 KB
- 文档页数:4
C语⾔读取写⼊ini配置⽂件的⽅法实现⽬录⼀、了解什么是INI⽂件?⼆、INI⽂件的格式三、解析上述⽂件四、测试如下⼀、了解什么是INI⽂件?ini ⽂件是Initialization File的缩写,即初始化⽂件,这是⽤来配置应⽤软件以实现不同⽤户的要求。
⼆、INI⽂件的格式INI⽂件由节、键、值组成。
⼀个简单的的INI⽂件例⼦如下:[Setting]INIT_FLAG=0;VOLUME=1;LANGUAGE=1;如上例⼦,[Setting]就是节,=号左边的值是键,=号右边的是值。
三、解析上述⽂件/*ini.h*/#ifndef INI_H#define INI_H#include <stdio.h>#include <string.h>int GetIniKeyString(char *title,char *key,char *filename,char *buf);int PutIniKeyString(char *title,char *key,char *val,char *filename);#endif /*INI_H*//*ini.c*/#include <stdio.h>#include <string.h>/** 函数名: GetIniKeyString* ⼊⼝参数: title* 配置⽂件中⼀组数据的标识* key* 这组数据中要读出的值的标识* filename* 要读取的⽂件路径* 返回值:找到需要查的值则返回正确结果 0* 否则返回-1*/int GetIniKeyString(char *title,char *key,char *filename,char *buf){FILE *fp;int flag = 0;char sTitle[64], *wTmp;char sLine[1024];sprintf(sTitle, "[%s]", title);if(NULL == (fp = fopen(filename, "r"))) {perror("fopen");return -1;}while (NULL != fgets(sLine, 1024, fp)) {// 这是注释⾏if (0 == strncmp("//", sLine, 2)) continue;if ('#' == sLine[0]) continue;wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, strlen(key))) { // 长度依⽂件读取的为准sLine[strlen(sLine) - 1] = '\0';fclose(fp);while(*(wTmp + 1) == ' '){wTmp++;}strcpy(buf,wTmp + 1);return 0;}} else {if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 长度依⽂件读取的为准flag = 1; // 找到标题位置}}}fclose(fp);return -1;}/** 函数名: PutIniKeyString* ⼊⼝参数: title* 配置⽂件中⼀组数据的标识* key* 这组数据中要读出的值的标识* val* 更改后的值* filename* 要读取的⽂件路径* 返回值:成功返回 0* 否则返回 -1*/int PutIniKeyString(char *title,char *key,char *val,char *filename){FILE *fpr, *fpw;int flag = 0;char sLine[1024], sTitle[32], *wTmp;sprintf(sTitle, "[%s]", title);if (NULL == (fpr = fopen(filename, "r")))return -1;// 读取原⽂件sprintf(sLine, "%s.tmp", filename);if (NULL == (fpw = fopen(sLine, "w")))return -1;// 写⼊临时⽂件while (NULL != fgets(sLine, 1024, fpr)) {if (2 != flag) { // 如果找到要修改的那⼀⾏,则不会执⾏内部的操作wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, strlen(key))) { // 长度依⽂件读取的为准flag = 2;// 更改值,⽅便写⼊⽂件sprintf(wTmp + 1, " %s\n", val);}} else {if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 长度依⽂件读取的为准flag = 1; // 找到标题位置}}}fputs(sLine, fpw); // 写⼊临时⽂件}fclose(fpr);fclose(fpw);sprintf(sLine, "%s.tmp", filename);return rename(sLine, filename);// 将临时⽂件更新到原⽂件}上述两个函数是简单的解析函数,因为ini⽂件有很多种解析⽅式,根据不同的需求解析也不同所以要进⾏修改⽐如我的注释符号是 “ ;”,所以我需要修改并且根据实际功能需求也可以进⾏进⼀步的封装四、测试如下ini样本⽂件/*test.ini*/[city]beijing = hello-beijingshanghai = hello-shanghai#information[study]highschool = xxxxuniversity = yyyytest.c程序/*test.c*/#include "ini.h"#include <stdio.h>int main(int argc, char const *argv[]){char buff[100];int ret;ret = GetIniKeyString("city","beijing","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);ret = GetIniKeyString("study","highschool","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);ret = PutIniKeyString("study","highschool","zzzz","./test.ini");printf("put ret:%d\n",ret);ret = GetIniKeyString("study","highschool","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);return 0;}结果如下:ret:0,hello-beijingret:0,xxxxput ret:0ret:0,zzzz相应的test.ini的study段highschool项变成了zzzz.这⾥还要注意,section使⽤中⽂字符可能会⽆法识别!到此这篇关于C语⾔读取写⼊ini配置⽂件的⽅法实现的⽂章就介绍到这了,更多相关C语⾔读取写⼊ini 内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
在VC++中读写INI文件在VC++中读写INI文件在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:一.将信息写入.INI文件中.1.所用的WINAPI函数原型为:其中各参数的意义:LPCTSTR lpAppName 是INI文件中的一个字段名.LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.LPCTSTR lpFileName 是完整的INI文件名.2.具体使用方法:设现有一名学生,需把他的姓名和年龄写入 c:\stud\student.ini 文件中.此时c:\stud\student.ini文件中的内容如下:[StudentInfo]Name=张三3.要将学生的年龄保存下来,只需将整型的值变为字符型即可:二.将信息从INI文件中读入程序中的变量.1.所用的WINAPI函数原型为:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);其中各参数的意义:前二个参数与 WritePrivateProfileString中的意义一样.lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.nSize : 目的缓存器的大小.lpFileName : 是完整的INI文件名.2.具体使用方法:现要将上一步中写入的学生的信息读入程序中.执行后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".3.读入整型值要用另一个WINAPI函数:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);这里的参数意义与上相同.使用方法如下:三.循环写入多个值,设现有一程序,要将最近使用的几个文件名保存下来,具体程序如下:1.写入:CString strTemp,strTempA;int i;int nCount=6;file://共有6个文件名需要保存for(i=0;i {strTemp.Format("%d",i);strTempA=文件名;file://文件名可以从数组,列表框等处取得.::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,"c:\\usefile\\usefile.ini");}strTemp.Format("%d",nCount);::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");file://将文件总数写入,以便读出.2.读出:nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");for(i=0;i {strTemp.Format("%d",i);strTemp="FileName"+strTemp;::GetPrivateProfileString("CurrentIni",strTemp,"default.fil",strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");file://使用strTempA中的内容.}补充四点:1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.2.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\student.ini".4.从网页中粘贴源代码时,最好先粘贴至记事本中,再往VC中粘贴,否则易造成编译错误,开始时我也十分不解,好好的代码怎么就不对呢?后来才找到这个方法.还有一些代码中使用了全角字符如:<,\等,也会造成编译错误.。
C语言读取INI配置文件Ini.h#pragma once#include"afxTempl.h"class DLLPORT CIni{private:CString m_strFileName;public:CIni(CString strFileName) :m_strFileName(strFileName){}public://一般性操作:BOOL SetFileName(LPCTSTR lpFileName); //设置文件名CString GetFileName(void); //获得文件名BOOL SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue, bool bCreate = true); //设置键值,bCreate是指段名及键名未存在时,是否创建。
CString GetValue(LPCTSTR lpSection, LPCTSTR lpKey); //得到键值.BOOL DelSection(LPCTSTR strSection); //删除段名BOOL DelKey(LPCTSTR lpSection, LPCTSTR lpKey); //删除键名public://高级操作:int GetSections(CStringArray& arrSection); //枚举出全部的段名int GetKeyValues(CStringArray& arrKey, CStringArray& arrValue, LPCTSTR lpSection); //枚举出一段内的全部键名及值BOOL DelAllSections();};/*使用方法:CIni ini("c:\\a.ini");int n;/*获得值TRACE("%s",ini.GetValue("段1","键1"));*//*添加值ini.SetValue("自定义段","键1","值");ini.SetValue("自定义段2","键1","值",false);*//*枚举全部段名CStringArray arrSection;n=ini.GetSections(arrSection);for(int i=0;i<n;i++)TRACE("%s\n",arrSection[i]);*//*枚举全部键名及值CStringArray arrKey,arrValue;n=ini.GetKeyValues(arrKey,arrValue,"段1");for(int i=0;i<n;i++)TRACE("键:%s\n值:%s\n",arrKey[i],arrValue[i]); *//*删除键值ini.DelKey("段1","键1");*//*删除段ini.DelSection("段1");*//*删除全部ini.DelAllSections();*/Ini.cpp#include"StdAfx.h"#include"Ini.h"#define MAX_ALLSECTIONS 2048 //全部的段名#define MAX_SECTION 260 //一个段名长度#define MAX_ALLKEYS 6000 //全部的键名#define MAX_KEY 260 //一个键名长度BOOL CIni::SetFileName(LPCTSTR lpFileName){CFile file;CFileStatus status;if (!file.GetStatus(lpFileName, status))return TRUE;m_strFileName = lpFileName;return FALSE;}CString CIni::GetFileName(void){return m_strFileName;}BOOL CIni::SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue, bool bCreate) {TCHAR lpTemp[MAX_PATH] = { 0 };//以下if语句表示如果设置bCreate为false时,当没有这个键名时则返回TRUE(表示出错)//!*&*none-value*&!* 这是个垃圾字符没有特别意义,这样乱写是防止凑巧相同。
PB中对INI文件读写的补充函数我们在使用PB的INI函数读写INI文件时,有时也可能需要动态地删除某个节或者某个项,此函数即完成此功能。
$PBExportHeader$pfc_delprofilestring.srf$PBExportComments$Delete SECTION or KEY in INI fileglobal type pfc_delprofilestring from function_objectend typeforward prototypesglobal function integer pfc_delprofilestring (string as_file, string as_section, string as_key)end prototypesglobal function integer pfc_delprofilestring (string as_file, string as_section, string as_key);// Function: of_Delete// Arguments:// as_file The .ini file.// as_section The section name that the entry to be deleted is in.// as_key The key name of the entry that should be deleted from// the specified section.// (此参数为空值时删除整个节).// Returns: Integer// 1 success// 0 section does not exist, or key name does not exist// within specified section.// -1 file error// -2 if .INI file does not exist or has not been specified.//变量声明boolean lb_skiplineboolean lb_sectionfoundboolean lb_entryremovedinteger li_fileinteger li_rc = 1integer li_keylengthlong ll_lengthlong ll_firstlong ll_lastlong ll_posstring ls_linestring ls_sectionstring ls_tempstring ls_newfile// 判断指定的INI文件是否存在if not FileExists (as_file) thenreturn -2end if// 打开指定的INI文件ll_length = FileLength (as_file)li_file = FileOpen (as_file)if li_file = -1 then return li_file////////////////////////////////////////////////////////////////////////////// // 逐行读取INI文件并删除指定的节或者指定节中指定的项目// 原理:判断节和条目是否需要删除,如果需要删除,则跳过此行,// 否则,将此行保存到新文件字串变量中。
c使用inifile案例IniFile是一个用于处理INI文件的C库,它提供了一些函数来读取、写入和修改INI文件中的配置项。
INI文件是一种常见的配置文件格式,通常用于保存程序的配置信息。
以下是使用IniFile库进行INI 文件操作的一些示例:1. 创建INI文件并写入配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_create("config.ini");inifile_set_string(ini, "Section1", "Key1", "Value1");inifile_set_int(ini, "Section1", "Key2", 123);inifile_set_double(ini, "Section2", "Key3", 3.14);inifile_save(ini);inifile_destroy(ini);return 0;}```2. 读取INI文件中的配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");char* value1 = inifile_get_string(ini, "Section1", "Key1", NULL); int value2 = inifile_get_int(ini, "Section1", "Key2", 0);double value3 = inifile_get_double(ini, "Section2", "Key3", 0.0); printf("Value1: %s\n", value1);printf("Value2: %d\n", value2);printf("Value3: %f\n", value3);inifile_destroy(ini);return 0;}```3. 修改INI文件中的配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");inifile_set_string(ini, "Section1", "Key1", "NewValue1");inifile_set_int(ini, "Section1", "Key2", 456);inifile_set_double(ini, "Section2", "Key3", 2.718); inifile_save(ini);inifile_destroy(ini);return 0;}```4. 删除INI文件中的配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");inifile_remove_key(ini, "Section1", "Key1");inifile_remove_key(ini, "Section1", "Key2");inifile_remove_key(ini, "Section2", "Key3");inifile_save(ini);inifile_destroy(ini);return 0;}```5. 遍历INI文件中的所有配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");IniSection* section = ini->sections;while (section != NULL) {printf("[%s]\n", section->name);IniItem* item = section->items;while (item != NULL) {printf("%s=%s\n", item->key, item->value);item = item->next;}section = section->next;}inifile_destroy(ini);return 0;}```这些示例展示了使用IniFile库进行INI文件操作的基本方法。
CC++关于如何读写ini配置⽂件(⼩结)我们可能经常⽤到配置⽂件ini⽂件来获取或者保存参数信息,在VC中其函数中主要⽤到的有:读取1. 读取字符DWORD GetPrivateProfileString(LPCTSTR lpAppName, // INI⽂件中的⼀个字段名[节名]可以有很多个节名LPCTSTR lpKeyName, // lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpDefault, // 如果lpReturnedString为空,则把个变量赋给lpReturnedStringLPTSTR lpReturnedString, // 存放键值的指针变量,⽤于接收INI⽂件中键值(数据)的接收缓冲区DWORD nSize, // lpReturnedString的缓冲区⼤⼩LPCTSTR lpFileName // INI⽂件的路径);2. 读取整型值 (返回值为读到的整)UINT GetPrivateProfileInt(LPCTSTR lpAppName, // INI⽂件中的⼀个字段名[节名]可以有很多个节名LPCTSTR lpKeyName, // lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名INT nDefault, // 如果没有找到指定的数据返回,则把个变量值赋给返回值LPCTSTR lpFileName // INI⽂件的路径);写⼊1. 写⼊字符BOOL WritePrivateProfileString(LPCTSTR lpAppName, // INI⽂件中的⼀个字段名[节名]可以有很多个节名LPCTSTR lpKeyName, // lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpString, // 键值,也就是数据LPCTSTR lpFileName // INI⽂件的路径);2. 写⼊整型读写INI⽂件时相对路径和绝对路径都可以,根据实际情况选择 "..\\IniFileName.ini" // 这样的为相对路径 "D:\\IniFileName.ini" // 这样的为绝对路径MAX_PATH:是微软最⼤路径占的字节所设的宏 写⼊的ini⽂件分为:节、键名、键值 举个栗⼦: // XX.ini [串⼝配置] 波特率=19200有了理论,再看看实践的demo:写INI⽂件:LPTSTR lpPath = new char[MAX_PATH];strcpy(lpPath, "D:\\IniFileName.ini");WritePrivateProfileString("LiMing", "Sex", "Man", lpPath);WritePrivateProfileString("LiMing", "Age", "20", lpPath);WritePrivateProfileString("Fangfang", "Sex", "Woman", lpPath);WritePrivateProfileString("Fangfang", "Age", "21", lpPath);delete [] lpPath;INI⽂件如下:[LiMing]Sex=ManAge=20[Fangfang]Sex=WomanAge=21读INI⽂件:TCHAR FPath[128];::GetCurrentDirectory(MAX_PATH, FPath);strcat(FPath, ".\\Config.ini");CFile ConfigFile;if(!ConfigFile.Open(FPath, CFile::modeCreate||CFile::modeRead, NULL)){AfxMessageBox("打开Config.ini配置⽂件失败!!!");return FALSE;}ConfigFile.Close();LPTSTR lpPath = new char[MAX_PATH];LPTSTR LiMingSex = new char[6];int LiMingAge;LPTSTR FangfangSex = new char[6];int FangfangAge;strcpy(lpPath, "..\\IniFileName.ini");GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);delete [] lpPath;配置⽂件中经常⽤到ini⽂件,在VC中其函数分别为:写⼊.ini⽂件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);读取.ini⽂件:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);读取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);其中个参数的意思:LPCTSTR lpAppName ------- INI⽂件中的⼀个字段名LPCTSTR lpKeyName -------- lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpString ---------是键值,也就是变量的值,必须为LPCTSTR或CString类型LPCTSTR lpFileName --------完整的INI⽂件路径名LPCTSTR lpDefaut ----------如果没有其前两个参数值,则将此值赋给变量LPSTR lpReturnedString --------接收INI⽂件中的值的CString对象,即接收缓冲区DWORD nSize ------接收缓冲区的⼤⼩例⼦:CString StrName,Strtemp;int nAge;StrName = "jacky";nAge = 13;WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini");结果:(INI⽂件中显⽰如下:)[Student]Name=jacky读取:CString SName;GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c:\\setting.ini");结果:SName = "jacky";这⾥需要注意点就是⽤完GetBuffer函数后⼀定要释放(⽤SName.ReleaseBuffer()函数),不然后⾯再⽤到SName 的其他⼦函数就会失灵。
c读取配置文件的方法在C语言中读取配置文件是非常常见的操作,它可以方便地管理程序的一些参数和选项,让程序更加灵活和易于维护。
下面是一些常见的方法:1. 使用标准库函数fopen和fscanf这是最常见的方法之一,使用标准库函数fopen和fscanf来逐行读取配置文件中的内容。
具体实现步骤如下:a. 使用fopen打开配置文件,获取文件指针。
b. 使用fscanf读取每一行的内容,根据具体的配置格式进行解析。
c. 关闭文件指针。
示例代码:FILE *fp;char buf[1024];int value;fp = fopen('config.ini', 'r');if (fp == NULL){printf('Cannot open config file.');return -1;}while (fgets(buf, sizeof(buf), fp) != NULL){if (sscanf(buf, 'key=%d', &value) == 1){// 解析成功,使用读取到的值进行后续操作printf('value=%d', value);}}fclose(fp);2. 使用ini配置文件解析库ini配置文件解析库是一个专门用来解析ini配置文件的库,它能够快速、简单地读取和修改ini文件中的配置项。
具体实现步骤如下:a. 下载并安装ini解析库。
b. 使用ini_parse函数读取配置文件。
c. 使用ini_get函数获取配置项的值。
示例代码:#include 'ini.h'int handler(void* user, const char* section, const char* name,const char* value)if (strcmp(section, 'config') == 0 && strcmp(name, 'key') == 0){// 获取配置项的值int* pvalue = (int*)user;*pvalue = atoi(value);}return 1;}int main(){int value;if (ini_parse('config.ini', handler, &value) < 0){printf('Cannot open config file.');return -1;}printf('value=%d', value);return 0;3. 使用XML配置文件解析库XML配置文件解析库是一个专门用来解析XML格式的配置文件的库,它能够解析复杂的XML文件,并且提供了灵活的配置项操作方式。
ini文件格式INI文件由节、键、值组成。
节[section]参数(键=值)name=value下面是一个ini文件的例子[Section1Name]KeyName1=value1KeyName2=value2...[Section2Name]KeyName21=value21KeyName22=value22其中:[Section1Name]用来表示一个段落。
因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。
例如:[Section1Name]表示传感器灵敏度参数区;[Section2Name]表示测量通道参数区等等。
注解:使用分号表示(;)。
在分号后面的文字,直到该行结尾都全部为注解。
二Qt写ini文件[cpp]view plaincopyprint?1#include<QtCore/QCoreApplication>2#include<QSettings>3int main(int argc,char*argv[])4{5QCoreApplication a(argc,argv);6//Qt中使用QSettings类读写ini文件7//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省8QSettings*configIniWrite=new QSettings("hahaya.ini",QSettings::IniFormat);9//向ini文件中写入内容,setValue函数的两个参数是键值对10//向ini文件的第一个节写入内容,ip节下的第一个参数11configIniWrite->setValue("/ip/first","192.168.0.1");12//向ini文件的第一个节写入内容,ip节下的第二个参数13configIniWrite->setValue("ip/second","127.0.0.1");14//向ini文件的第二个节写入内容,port节下的第一个参数15configIniWrite->setValue("port/open","2222");16//写入完成后删除指针17delete configIniWrite;1819return a.exec();20}[cpp]view plain copyprint?21#include<QtCore/QCoreApplication>22#include<QSettings>23int main(int argc,char*argv[])24{25QCoreApplication a(argc,argv);26//Qt中使用QSettings类读写ini文件27//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省28QSettings*configIniWrite=new QSettings("hahaya.ini",QSettings::IniFormat);29//向ini文件中写入内容,setValue函数的两个参数是键值对30//向ini文件的第一个节写入内容,ip节下的第一个参数31configIniWrite->setValue("/ip/first","192.168.0.1");32//向ini文件的第一个节写入内容,ip节下的第二个参数33configIniWrite->setValue("ip/second","127.0.0.1");34//向ini文件的第二个节写入内容,port节下的第一个参数35configIniWrite->setValue("port/open","2222");36//写入完成后删除指针37delete configIniWrite;3839return a.exec();40}运行程序后,打开程序目录下的hahaya.ini文件,结果如下图所示:三Qt读ini文件[cpp]view plaincopyprint?41#include<QtCore/QCoreApplication>42#include<QSettings>43#include<QString>44#include<QDebug>45int main(int argc,char*argv[])46{47QCoreApplication a(argc,argv);4849QSettings*configIniRead=new QSettings("hahaya.ini",QSettings::IniFormat);50//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型51QString ipResult=configIniRead->value("/ip/second").toString();52QString portResult=configIniRead->value("/port/open").toString();53//打印得到的结果54qDebug()<<ipResult;55qDebug()<<portResult;56//读入入完成后删除指针57delete configIniRead;58return a.exec();59}[cpp]view plain copyprint?60#include<QtCore/QCoreApplication>61#include<QSettings>62#include<QString>63#include<QDebug>64int main(int argc,char*argv[])65{66QCoreApplication a(argc,argv);6768QSettings*configIniRead=new QSettings("hahaya.ini",QSettings::IniFormat);69//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型70QString ipResult=configIniRead->value("/ip/second").toString();71QString portResult=configIniRead->value("/port/open").toString();72//打印得到的结果73qDebug()<<ipResult;74qDebug()<<portResult;75//读入入完成后删除指针76delete configIniRead;77return a.exec();78}程序运行截图:。
VC++6.0与通信实践
实践报告
班级:
姓名:
一、实践项目基本信息
项目名称CIni文件读写
项目目标完成*.INI文件的设计与编码
实践时间2012.05.17
所用课时 4
完成情况未完成
二、项目详细设计
1、主要功能
启动时自动读入配置文件中的内容,退出时自动将配置的内容写入到配置文件中。
2、交互界面
3、类关系设计
(CCIniApp类:派生于CWinApp类,作为应用程序类,MFC中线程相关类,每一个MFC程序都是一个线程;CCIniDlg类:派生于CDialog类,通过
DDV完成了对话框的初始化,CCTestlin类,完成配置信息。
4、关键代码
在CIniDlg类中:
OnInitDialog()函数中
char szOption1[MAX_PATH];
char szOption2[MAX_PATH];
char szOption3[MAX_PATH];
CCTestIni::ReadString("配置信息","选项1",szOption1,"test.ini");
CCTestIni::ReadString("配置信息","选项2",szOption2,"test.ini");
CCTestIni::ReadString("配置信息","选项3",szOption3,"test.ini");
m_strEdit1.Format("%s",szOption1);
m_strEdit2.Format("%s",szOption2);
m_strEidt3.Format("%s",szOption3);
UpdateData(FALSE);
return TRUE;
创建DestroyWindow()函数:
UpdateData(TRUE);
CString str1 = m_strEdit1;
CString str2 = m_strEdit2;
CString str3 = m_strEidt3;
char* p1 = str1.GetBuffer(str1.GetLength()+1);
char* p2 = str2.GetBuffer(str2.GetLength()+1);
char* p3 = str3.GetBuffer(str3.GetLength()+1);
CCTestIni::WriteString("配置信息","选项1",p1,"test.ini");
CCTestIni::WriteString("配置信息","选项2",p2,"test.ini");
CCTestIni::WriteString("配置信息","选项3",p3,"test.ini");
return CDialog::DestroyWindow();
三、实践心得。