2013年10月30日 星期三

讀寫 tag , ini

PC 的程式 有時需要 讀寫 ini    設定檔

寫了一段處理文字 並讀取值的code

用 ifstream 開檔案
然後用getline讀取每一行

用find 去比對Tag  , 試著把這一行放到 if  內會有問題
rt=st1.find(Tag_SaveTemp);


以下的code 會變成無論有沒有值都會進 if
if(st1.find(Tag_SaveTemp)>=0){
savtemp=GetTagValue(st1,Tag_SaveTemp);
continue;
}


ini   擺放的位置
不指定路徑的話 ,  Debug 模式下  ini 要放在porject 的主目錄,
release 版本 跟執行檔放同一個目錄





char *Tag_SaveTemp ="OutPutTempFile";
char *Tag_AAA= "AAAA";
char *Tag_BBB= "BBBB";

void IniTest(void)
{
    ifstream  fin; 
    string st1;
    int rt;
    int savtemp=0;
    int aaa=0;
    int bbb = 0;
    
    fin.open("Algo.ini");

    while(getline(fin, st1)){

        rt=st1.find(Tag_SaveTemp);
        if((rt)>=0){
            savtemp=GetTagValue(st1,Tag_SaveTemp);
            continue;
        }

        rt=st1.find(Tag_AAA);
        if((rt)>=0){
            aaa=GetTagValue(st1,Tag_AAA);
            continue;
        }

        rt=st1.find(Tag_BBB);
        if((rt)>=0){
            bbb=GetTagValue(st1,Tag_BBB);
            continue;
        }
        

    }
    
    
    

}


另需要一個function 去解析 =  後面的數字

int  GetTagValue(string line,char* tag)
{
    int a=0,b=0;
    int len=0;
    string st1;
    

    len=line.length();
    a=line.find("=");
    st1=line.substr(a+1,len-a-1);
    b=atoi(st1.c_str());

    

    return b;

}


沒有留言:

張貼留言