- ベストアンサー
C++ 設定ファイル
VC++ではなく、ただのC++での質問です。 エラーメッセージやウインドウのサイズを外部ファイルに定義したいと思っています。 .NETではXMLファイルを使用していたのですが、C++では何を使うのが妥当でしょうか。 iniファイルというものもあるらしいのですが、 http://msdn.microsoft.com/ja-jp/library/cc429779.aspx にて、「この関数は、16 ビット Windows ベースのアプリケーションとの互換性を保つ目的でのみ提供されています。Win32 ベースのアプリケーションでは、初期化情報をレジストリに格納してください。」 といった内容が記述されており、iniファイルはあまり好ましくないようです。(この関数自体使えなくなる?)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
お疲れ様です。 iniファイルも64kbの壁があるので、ウィンドウの位置やサイズを保存するぐらいなら良いですが、エラーメッセージ等のリソースに近い情報を保存するには役不足です。 自分でCSV等で保存し、それを読み込むのが妥当と思います。
その他の回答 (4)
- hidebun
- ベストアンサー率50% (92/181)
Apacheのトップレベルプロジェクトですからねぇ。 それなりに信頼性はあるとは思いますが、詳しくは知りません。 質問者さんの求めるものが、いったいどのレベルなのか、 ライセンスはどうなのか、みたいな話になってくると思いますよ。 100%の信頼性を求めるのであれば、自分達の設けた制約の中で 100%動作するソフトウェアを全て開発するか、VC++のMSXMLなどの ように、更新サポートの受けられるコンポーネントを使うしかないでしょう。 マルチプラットフォームで、信頼性があって、無償で… なんてのは、現実的には難しい(また虫のいい)要求のような気がします。 理想はそうでしょうけれども、それなりに対価が必要かと思います。 それでは、健闘を祈ります(^^)
お礼
再度のご回答ありがとうございます。 多少失礼な物言いになってしまったことお詫びさせて下さい。 C++で言うならBoost(これは0xという形で正規のものになりそうですが)、JAVAで言うならTomcatなどのレベルであれば文句なしなんですが。 (私個人の認識に理解を求めているようで非常に申し訳ないです。) サポートはありませんが正規システムに採用している会社さんが何社かありましたのでそのくらいの信頼性があれば・・・と考えておりました。
- hidebun
- ベストアンサー率50% (92/181)
XML使うなら、クラスプラットフォームの http://ja.wikipedia.org/wiki/Apache_Xerces てのがあるみたいですよ。
お礼
回答ありがとうございます。 C++用のXMLパーサーなんてものが存在したんですね、知りませんでした。 ただしどの程度信頼して良いものなのか調べてもはっきりしません。 これは実績のあるものなのでしょうか、あるいは将来性のあるものでしょうか。
- jacta
- ベストアンサー率26% (845/3158)
> VC++ではなく、ただのC++での質問です。 これがどう意味か分かりませんが、標準C++の規格厳密合致プログラムという意味であれば... テキストでもバイナリでもよいので、何らかのファイルにする以外ありません。レジストリのような環境依存の概念は使えませんし、XMLを使うのであれば、XMLパーサーは自分で実装しなければなりません。 > iniファイルというものもあるらしいのですが、 何とか.ini というファイルを使うこと自体は問題ありません。ただ、ファイル名の形式(特にディレクトリの指定方法)は処理系定義ですし、ファイルの中身の形式は、自分で定義し、自分でパースする必要があります。
お礼
回答が遅れ申し訳ありません。 >これがどう意味か分かりませんが、標準C++の規格厳密合致プログラムという意味であれば... Windows依存にはしたくない、という意味です。 >レジストリのような環境依存の概念は使えませんし、 http://e-words.jp/w/E383ACE382B8E382B9E38388E383AA-1.html レジストリ自体がWindows固有のものだったんですね。 >XMLを使うのであれば、XMLパーサーは自分で実装しなければなりません。 .NETは標準でXML取得用のクラスが提供されていましたので使用しました。 C++はそれがなさそうなので苦慮しておりました。 >ファイルの中身の形式は、自分で定義し、自分でパースする必要があります。 わかりました、iniファイル用に値取得クラスを作るしかないようですね。
- hidebun
- ベストアンサー率50% (92/181)
INIファイルなんて普通に使うと思いますけど。簡便ですし。 エラーチェックをきちんとしないと、こんなこと↓ http://e-words.jp/w/INIE38395E382A1E382A4E383AB.html になるとは思いますが。 >VC++ではなく、ただのC++での質問です。 これはVC++を使いたくないということを意図していますか?
お礼
回答が遅れました、申し訳ありません。 >INIファイルなんて普通に使うと思いますけど。簡便ですし。 C++が推奨しているファイル形式があればそれを使用したいな、と。 標準で値取得用の関数が存在していれば自分で定義する必要もありませんし。 >エラーチェックをきちんとしないと、こんなこと↓ なるほど、推奨されていない理由はこれでしょうか。 今回は単にアプリの情報を格納するだけですので問題ないとは思いますが(最悪アプリがバグる程度) >これはVC++を使いたくないということを意図していますか? その通りです。 Windows以外にも対応したいと考えております。
お礼
回答が遅れ申し訳ありません。 >iniファイルも64kbの壁があるので、ウィンドウの位置やサイズを保存するぐらいなら良いですが、エラーメッセージ等のリソースに近い情報を保存するには役不足です。 http://www.geocities.co.jp/Beautycare/4965/public/save.html 保存容量の問題でしょうか、たしかにこれは問題ですね。 >自分でCSV等で保存し、それを読み込むのが妥当と思います。 その通りですね、しかしCSVは可読性の面から除外しました。 修正しやすいファイル形式が理想ですのでiniやXMLなどを理想としていたのですが。 メッセージの保存に適した(可読性の良い)ファイル形式はなにかありませんでしょうか。 なければiniファイルの拡張子を.aaaとかにしてiniクラスに読ませようと思います。(強引ですが)