2010-12-20 67 views
7

我想將我的應用程序的設置存儲在配置文件中。在Linux(和Mac?)下,這個(可能)是/home/user/.config/app.conf,而在Windows下它可能是「C:\ Documents and Settings \ username \ Application Data \ app.conf」。它當然可以存儲在別處,所以獲得正確位置的唯一方法是使用特定於平臺的功能。獲取配置文件的跨平臺路徑(C/C++)

我只想說我不想冒險編碼這個並且弄錯它(因爲我無法訪問這些平臺進行測試),所以沒有人知道是否有任何經過良好測試的跨平臺可以做到這一點的C/C++庫?使用一堆#define的.h/.hpp文件也可以,只要它被廣泛使用。

我以爲Boost的程序選項庫可能能夠(因爲它可以加載配置文件),但它似乎不能。

有什麼建議嗎?

回答

3

這再次出現了,所以我決定咬緊牙關,創建自己的解決方案,因爲現有的只是大型框架的一部分,對於小程序來說不切實際。

我已經發布的代碼在https://github.com/Malvineous/cfgpath

它被放置在公共領域如此自由的任何人以任何目的使用。除了標準平臺API之外,它沒有任何依賴關係。只需#include一個.h文件並調用其中的一個函數。存儲庫中的其他文件只是測試代碼,除非您想進行要發送給我的更改,否則不需要這些代碼(請做!)

不幸的是,正如我在我的原始文章中所說,我不可以輕鬆訪問許多平臺,所以我希望我會得到一些補丁來增加對更多平臺的支持。

0

我認爲boost filesystem libraries應該有所幫助。它具有獨立於平臺的路徑語法。

+2

我使用哪種語法在Linux下顯示爲/home/user/.config,但在Windows下會自動變爲C:\ Documents and Settings \ username \ App Data? – Malvineous 2010-12-20 11:58:09

+0

親愛的主人,*助*僅用於尋找主目錄?談論矯枉過正。我不想成爲在MinGW中編譯它的人。 – Wyatt8740 2016-01-03 18:54:51

3

Qt的QSettings班會爲你做這個。

在* nix上,設置將存儲在$ HOME/.config中。在Windows上,這些設置將存儲在註冊表中。在Mac上,這些設置將存儲在$ HOME/Library/Preferences /中。

+0

嘗試'QDesktopServices :: storageLocation(QDesktopServices :: DataLocation)'。請參閱http://qt-project.org/doc/qt-4.8/qdesktopservices.html – 2013-05-05 16:13:29