//Unix
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <vector>
using namespace std;
class MyIni{
private:
char name[255];
int age;
int fee;
int feei;
int fd;//配置文件描述符
public:
MyIni(){fee= 0; feei=0;}
void set(char*n,int i);
void createConfig();
void saveConfig();
void readConfig();
void rebuildread(char *readl);
char* getName()
{
return name;
}
int getAge()
{
return age;
}
};
int main()
{
MyIni mine;
// mine.set("caisini",25);
// mine.createConfig();
// mine.saveConfig();
mine.readConfig();
return 0;
}
void MyIni::set(char* n,int i)
{
strcpy(name,n);
age = i;
}
void MyIni::createConfig()
{
/* fd=open("./config.ini",O_CREAT|O_RDWR|0622);
char buf[255];
bzero(buf,255);
strcpy(buf,"test ini/nname = /nage = /nfee = /nfeei = /n");
write(fd,buf,strlen(buf));
close(fd);*/
}
void MyIni::saveConfig()
{
fd=open("./config.ini",O_CREAT|O_RDWR|O_TRUNC|0622);
char buf[2048];
bzero(buf,2048);
sprintf(buf,"test ini/nname = %s/nage = %d/nfee = %d/nfeei = %d/n",name,age,fee,feei);
write(fd,buf,strlen(buf));
cout << "save:" << buf << endl;
close(fd);
}
void MyIni::readConfig()
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
fp = fopen("./config.ini", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1)
{
rebuildread(line);
}
if (line)
free(line);
}
void MyIni::rebuildread(char *readl) //处理读取的数据
{
string eop("=");
cout << readl;
vector<string> vec;
vec.push_back(,readl.end());
}
其实在 window里有几个API是专门针对INI文件的。GetPrivateProfileString,GetModuleFileName,PathRemoveFileSpec等等等