現在、パーサープロジェクトでいくつかのファイルxmlフォーマット1を別のxmlフォーマットに変換しようとしています。C++でconfigファイルを解析する方が良い
私はとても使いやすいようにしたいと思い
私は私のプロジェクトを終え、そして知るべきパラメータの静かなたくさんある、それらのほとんどは、いくつかのファイルへのパスは、パラメータのリスト、...私はたsettings.txtを作成:
Do you want to change parameters? (Y/N)
if(yes){
Do you want to change paramater 1? //If no value, [] stays
[pathbydefault]
}
...
else{ load from settings.txt}
:それはこのファイルには、人々は同じパラメータを持つファイルを解析したい場合考えるmodify.Iに簡単ですので、私のアプリケーションが似ている
someparameter = defaultvalue
ような行が含まれています
これを実装するには、getline()を使用し、最初に '='で分割してstd :: mapに配置します。 これは悪い選択だと思うので、私は検索して、C++のための多くのアーキテクチャを見つけました:リスト(実際には10個のパラメータが重い)、テーブル(読みにくく、コードは他の人には暗いです)。
私にはどのような解決方法をお勧めしますか? もちろん、いくつかのソリューションを検討するには、実装を依頼しないでください。
いくつかの情報:私は大したことではないと思うが、私はUnixベースのシステム(Mac OSまたはLinux)で作業しているので、Windowsライブラリを使用することはできません。私はWindowsのソリューションを見たが、私はこれ以上は進まなかった。
私が使用して、[SimpleIni](https://github.com/brofield/simpleini)をお勧めします:あなたがUnixベースのシステムに取り組んで言及したよう
は、あなたは、このプロセッサを検討する必要があります。 XMLパーサーがその設定をXMLファイルに保存しないということは皮肉なことです。しかし、私はあなたを責めることはできませんが、XMLはあまりにも扱いにくいです。 '[section] key = value'形式ははるかに簡単です。Windows INIファイル形式と同じですが、これらのAPIは今世紀には更新されていないため、Windowsであっても使用しないでください。 –
ありがとう、私はWindowsのiniを使用しないときは、より良い解決策を見逃すように感じた。 設定のフォーマットについては、私自身のプログラムで解析していますが、実際には、C++を使うことができます –
これを何年もかけて多言語で処理するクラスを作成しました。このコードを必要に応じて複雑なものや簡単なものにすることができます。たとえば、コメントを許可してからそれらをスキップしますか?行末にコメントがありますか?スペースを取り除くために文字列をトリミングしますか?はいの場合、エスケープ文字をサポートして、開始時または終了時に埋め込むことができますか?すべてのことが言った、既存のライブラリを使用することはあなたのライセンス要件に合っていればいいアイデアです、もしそれが将来存在しないことを心配しなければ、 – Andrew