編寫乙個簡單的license檔案控制器

2021-07-01 18:41:18 字數 2979 閱讀 7895

編寫乙個file-drive的軟體許可權控制器:

檔案內容可以如下:

#注釋car.isprivate true

關於檔案的讀寫,是乙個迴圈,每讀取一行,就會去解析每一行的license,分理出裡面的key value對,並且把它們放入我們的 kvpair儲存起來

bool params::readfileparams (const str& filename)

str key, value;

while (getfileentry(ifs, key, value))

this->set(key, value);

return true;

}

通過閱讀以上的檔案來獲得軟體所有的許可權控制。

1. 先編輯乙個儲存 key/value 對的資料結構 kvpair

struct kvpair 

kvpair(const kvpair& src)

kvpair& operator= (const kvpair& src)

return *this;

}str _key;

str _value;

str _readonly;

}

然後定義乙個控制器, params, 當然,我們不止乙個kvpair,所以在params類中,我們有一連串的kvpair

class params 

std::vector_kvplist;

}

關於檔案的讀寫,是乙個迴圈,每讀取一行,就會去解析每一行的license,分理出裡面的key value對,並且把它們放入我們的 kvpair儲存起來

bool params::readfileparams (const str& filename)

str key, value;

while (getfileentry(ifs, key, value))

this->set(key, value);

return true;

}

其中關鍵是去讀去檔案中每一行的key/value 值,我們允許注釋行的加入,所以在解析的時候要去忽略注釋行,好在我們可以統一規定#開頭的為注釋行。

bool params::getfileentry (ifstream& ifs, str& key, str& value) const}}

else return false;

} while (!result);

return result;

}

還有乙個設定key/value的函式, set

// set a "key"

bool set (const str& key, const str& value); //

bool set (const str& key, int value); //

bool setbool(const str& key, bool value); //

bool set (const str& key, double value); //

bool set (const str& key, point value); //

bool params::set (const str& key, const str& value, bool readonlyflag = false) ; //

所有的set函式都會用到以下的set函式

// functions to set a "key".

//bool params::set (const str& key, const str& value, bool readonlyflag)

//key is read only

return false;}}

//// a new key, so add to the list.

//struct params::kvpair kvp;

kvp._key = key;

kvp._value = value;

kvp._readonly = readonlyflag;

_kvplist.push_back(kvp);

return true;

}

當然,我們在核對license的時候,也會去從kvpair中去獲取相應的key value對

bool params::getstr (const str& key, str& value) const

else

++p;

}// key not found.

return false;

}

總結:1. 上面的file-drive方式在軟體開發當中十分普遍,通過改變檔案的方式來改變軟體的整體控制也是十分普遍。

2. 上面的案例是乙個簡單的許可權控制器,當然我們還需當心多執行緒間的同時讀取,加以鎖的保護來進行處理,當然涉及到檔案的不同程序讀取,也要加file-lock進行保護。

關於檔案的讀寫,是乙個迴圈,每讀取一行,就會去解析每一行的license,分理出裡面的key value對,並且把它們放入我們的 kvpair儲存起來

bool params::readfileparams (const str& filename)

str key, value;

while (getfileentry(ifs, key, value))

this->set(key, value);

return true;

}

編寫乙個簡單的shell

include include include include include include include include void getloginname void gethostname void getdir p printf s p int main char argv 32 char...

編寫乙個簡單的死鎖

public class dead lock1 class runnable1 implements runnable catch exception e class runnable2 implements runnable catch exception e obj1 和 obj2 都是屬於類的...

乙個簡單的makefile的編寫

標頭檔案 part.h cpp檔案 包含part.h part.cpp cpp檔案 包含part.h partmain.cpp makefile編寫如下 main partmain.o part.o g o main partmain.o part.o partmain.o partmain.cpp...