C++操作配置文件用到的一些方法
来源:互联网 发布:kuka机器人编程 编辑:程序博客网 时间:2024/05/16 15:03
删除配置文件中某一行
WritePrivateProfileString(段名, 键名, NULL, 文件路径);如:
[水果]
苹果 = 1
香蕉 = 2
橘子 = 3
<pre name="code" class="cpp">WritePrivateProfileString(_T("水果"),_T("橘子"), NULL, 文件路径);结果就是橘子这一行被删除。
在文件操作中经常用到的几个函数:
CString::Find
在一个较大的字符串中查找字符或子字符串 ,返回此CString对象中匹配到的第一个字符从0开始的索引;如果没有找到子字符串或字符则返回-1。
如:
CString str = abcdef;int n = str.Find('d');//结果n = 3;
CString::Left(intnCount)
——返回字符串前nCount个字符的字符串
CString::Right(int nCount)
——返回字符串后nCount个字符的字符串
//读取配置文件全部段名方法1/*统计共有多少个节 节名的分离方法:若chSectionNames数组的第一字符是'\0'字符,则表明 有0个节。否则,从chSectionNames数组的第一个字符开始,顺序往后找, 直到找到一个'\0'字符,若该字符的后继字符不是 '\0'字符,则表明前面的字符组成一个节名。若连续找到两个'\0'字符,则统计结束*/int CTestDlg::CalcCount(void){TCHAR chSectionNames[2048] = { 0 }; //所有节名组成的字符数组 char * pSectionName; //保存找到的某个节名字符串的首地址int i; //i指向数组chSectionNames的某个位置,从0开始,顺序后移int j = 0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量 int count = 0; //统计节的个数 ::GetPrivateProfileSectionNames(chSectionNames, 2048, ".\\ex1.ini");for (i = 0; i<2048; i++, j++){if (chSectionNames[0] == '\0')break; //如果第一个字符就是0,则说明ini中一个节也没有 if (chSectionNames[i] == '\0'){pSectionName = &chSectionNames[i - j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量,就是一个节名的首地址 j = -1; //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量赋成-1是因为节名字符串的最后一个字符0是终止符,不能作为节名的一部分 AfxMessageBox(pSectionName); //把找到的显示出来 if (chSectionNames[i + 1] == 0){break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止 }}}return count;}///////////////////////////////////////////////////////////////////////////////////////////////////////读取配置文件全部段名方法2int CIni::GetSections(CStringArray& arrSection){/*本函数基础:GetPrivateProfileSectionNames - 从 ini 文件中获得 Section 的名称如果 ini 中有两个 Section: [sec1] 和 [sec2],则返回的是 'sec1',0,'sec2',0,0 ,当你不知道 ini 中有哪些 section 的时候可以用这个 api 来获取名称 */ int i; int iPos=0; int iMaxCount; TCHAR chSectionNames[MAX_ALLSECTIONS]={0}; //总的提出来的字符串 TCHAR chSection[MAX_SECTION]={0}; //存放一个段名。 GetPrivateProfileSectionNames(chSectionNames,MAX_ALLSECTIONS,m_strFileName); //以下循环,截断到两个连续的0 for(i=0;i<MAX_ALLSECTIONS;i++){ if (chSectionNames[i]==0) if (chSectionNames[i]==chSectionNames[i+1]) break;} iMaxCount=i+1; //要多一个0号元素。即找出全部字符串的结束部分。 //arrSection.RemoveAll();//清空原数组 for(i=0;i<iMaxCount;i++){ chSection[iPos++]=chSectionNames[i]; if(chSectionNames[i]==0){ arrSection.Add(chSection); memset(chSection,0,i); iPos=0;}} return (int)arrSection.GetSize();}
0 0
- C++操作配置文件用到的一些方法
- .NET MVC 操作数据库要用到的一些方法
- ps用到的一些操作
- CAAnimation用到的一些方法
- AFNN用到的一些方法
- GDB 会用到的一些操作
- mysql 近日用到的一些操作
- 一些用到过的C 函数
- 关于文件上传用到的一些方法
- 可能用到的一些方法积累
- Jquery最长用到的一些方法
- 经常用到的一些js方法
- 画图时用到过的一些方法
- 画图时用到的一些方法
- Velocity经常要用到的一些方法
- js用到的一些工具方法
- 操作svg文件会用到的方法
- FreeBSD经常用到的配置文件的作用和配置方法
- linux生产者消费者(3)
- C++ 虚函数表解析
- Redis 对象
- zookeeper集群配置
- Android OkHttp完全解析 是时候来了解OkHttp了
- C++操作配置文件用到的一些方法
- SSL和SSH有什么区别
- php5.5 连接SQL SERVER 【环境配置及DLL文件可下载】
- python中使用xlrd、xlwt操作excel表格详解
- 笔记十一:智能指针(一)
- CSDN-markdown编辑器
- Unity5.x运行时动态更新烘培贴图
- Golang 中的“潜规则”
- android 蓝牙hfp client实现简介