已知INI文件中内容如下:如何列出它们的节名?
[SECTION1]
Key1=test1
[SECTION2]
Key2=Value2
[SECTION3]
Key3=Value3
[SECTION4]
Key4=Value4
[SECTION5]
Key5=Value5
要求输出如下所示:
SECTION1
SECTION2
SECTION3
SECTION4
SECTION5
请按任意键继续. . .
// 125枚举ini文件的所有节名.cpp : Defines the entry point for the console application.//
#include "stdafx.h"
#include "iostream"
#include<afx.h>
using namespace std;
#define MAX_ALLSECTIONS 300
#define MAX_SECTION 20
int _tmain(int argc, _TCHAR* argv[])
{
int i;int pos=0;CString str;
char chSectionNames[MAX_ALLSECTIONS]={0};
char chSection[MAX_SECTION]={0};
CString lpFileName="d:\\自己用vs2010创建的INI文件.ini";
GetPrivateProfileSectionNames(chSectionNames,MAX_ALLSECTIONS,lpFileName);//会把INI文件中的节名都存入chSectionNames这个字符数组
for(i=0;i<MAX_ALLSECTIONS-1;i++)
{
if(chSectionNames[i]==0&&chSectionNames[i+1]!=0) //这个if会把最后一个节名之前的所有节名都取出来!
{
for(int m=pos;m<i;m++)
chSection[m-pos]=chSectionNames[m];
pos=i+1; //记录当前取到了chSectionNames的具体哪个位置了。
str.Format("%s",chSection);//把字符数组chSection[0]--chSection[8]用str这个字符串变量显示出来
cout<<str<<endl;
}
if(chSectionNames[i]==0&&chSectionNames[i+1]==0) //这个if会把最后一个节名取出来!
{
for(int m=pos;m<=i;m++)//继续从chSectionNames的记录位置开始取字符出来。
chSection[m-pos]=chSectionNames[m];//m-pos 是因为从0开始存入chSection
str.Format("%s",chSection);
cout<<str<<endl;
break; //退出当前的for循环,
}
}
system("pause");
return 0;
}