讀取配置檔案(跨平台Linux和Windows)

2021-09-08 00:28:04 字數 2603 閱讀 5688

大部分的專案都會用到配置檔案,之前也有乙個一直在用的讀取配置檔案的**,感覺不是太好。也奉獻上來吧

static bool readconfigfile(const char* configfilepath,const string key,string &value)

;//獲取當前程式目錄

int getcurrentpath(char buf,char *pfilename)

; int bytes=0;

int fd=0;

sprintf(pidfile, "/proc/%d/cmdline", getpid());

fd = open(pidfile, o_rdonly, 0);

bytes = read(fd, buf, 256);

close(fd);

buf[max_path] = '\0';

#endif

char * p = &buf[strlen(buf)];

do while( '\\' != *p );

#else

} while( '/' != *p );

#endif

p++;

//配置檔案目錄

memcpy(p,pfilename,strlen(pfilename));

return 0;

}//從配置檔案讀取字串型別資料

int readconfigfile_string(char *filename, char *title,char *key,char *value)

; static char tmpstr[max_buf]=;

int rtnval=0;

int i = 0;

int flag = 0;

char *tmp=null;

bool isfirst=true; //是否為第一次掃瞄配置檔案

bool isend=false; //是否掃瞄完配置檔案

if((fp = fopen(filename, "r")) == null)

while(!feof(fp))

else

if(rtnval == '\n'||isfirst==true||isend==true) //第一次掃瞄配置檔案 第一行不用是\n

tmp = strchr(szline, '=');

if(( tmp != null )&&(flag == 1))

else if ( '\/' == szline[0] && '\/' == szline[1] ) //#注釋 如//age=25

else

}else

}else

}isfirst=false;

} }fclose(fp);

return -1;

}//從配置檔案讀取整型別資料

int readconfigfile_int(char *filename,char *title,char *key)

; if(readconfigfile_string(filename,title,key,value_string)==0) //成功

else //失敗 }

int main(int argc, char* ar**)

; memset(buf,0,sizeof(buf));

getcurrentpath(buf,conf_file_path);

strcpy(g_szconfigpath,buf);

printf("path:%s\n",g_szconfigpath);

int age=-1;

char href[32]=;

if (readconfigfile_string(g_szconfigpath,"cat","href",href)!=0)

printf("href:%s\n",href);

age=readconfigfile_int(g_szconfigpath,"cat","age");

if (age==-1)

printf("age:%d\n",age);

#ifdef win32

system("pause");

#endif // win32

return 0;

}

配置檔案內容

conf.ini

[cat]

href=192.168.0.109:8080

#href=192.168.0.109:8080

//age=25

age=100

vs2012執行結果

linux執行結果

改進說明:主要改進的就是換行才能獲取到資料,之前的這個要求很雞肋啊,用著太不方便了。

原輪子:

跨平台Unity Excel 檔案讀取和寫入

在網上看到很多 的解析excel 的文章,其中最經典的一篇莫過於雨凇momo的unity3d研究院之mac windows跨平台解析excel 六十五 但是在使用的過程中還是碰到了不少的 問題,在這裡總結一下,希望能對看到此處的朋友乙個幫助。excel的讀取,需要加入庫檔案 excel.dll 和i...

讀取配置檔案

類載入器 1 直接用class.forname 類的路徑名 class.forname com.hsf.classloader.classloader 2 用classloder 類載入器 inputstream in classloader.getsystemresourceasstream aa...

VS 儲存INI配置檔案和讀取配置檔案

ini檔案簡介 在我們寫程式時,總有一些配置資訊需要儲存下來,以便在下一次啟動程式完成初始化,這實際上是一種類持久化。將一些資訊寫入ini檔案 initialization file 中,可完成簡單的持久化支援。windows提供了api介面用於操作ini檔案,其支援的ini檔案格式一般如下 sec...