2012-01-03 64 views
1

可能性の重複:私はC++での.iniファイルからキーと値、セクションを読むことができますどのように
What is the easiest way to parse an INI File in C++?C++でiniファイルを読むにはどうすればよいですか?

シンプルなファイルを読むための非常に簡単なコードを教えてください。

例えば:

 
[SECTION] 
key1=int_value1 
key2=string_value2 
+2

あなたがそれを達成するために作ったどのような努力? –

+0

可能な複製:http://stackoverflow.com/q/12633/10077 –

+0

親愛なるポール、私は(GetPrivateProfileInt)を使用しようとするような質問をする前にほとんど試みていませんでしたが、私とはうまく動作しませんでした。 C++のエラーです(GetPrivateProfileInt識別子が見つかりません)。 –

答えて

4

https://github.com/brofield/simpleini iは、iniファイルを読み取るために使用するもので、それはボーナスとして、それはクロスプラットフォームであり、使用して、統合が容易でシンプルなテンプレートクラスです。

-1

まず、INIファイルは廃止されており、可能な限り避けてください。彼らはシンプルなフォーマット(おそらく正しい)のために魅力的だと思われますが、限られており、APIにアクセスするためのAPIは推奨されなくなりました。可能であれば、単純なXML設定ファイルを使用する方が良いかもしれません(ただし、外部コードが必要な場合もありますが、多くのXMLパーサーは太くて醜いですが、pugixmlが私のお気に入りです)。

INIを使用する必要がある場合は、GetPrivateProfile*の機能が必要です。here(VSを使用しているためWindowsをターゲットとしており、WinAPI関数を使用できると仮定しています)。

機能の正確な動作は実際にはやや複雑ですが、ほとんどの場合、不自然な場合は期待通りに動作します。セクション、int、および文字列のファイルを照会するには、

UINT value = GetPrivateProfileInt("Section", "Key", DEFAULT_VALUE, "program.ini"); 

などがあります。混乱の潜在的な点は、セクション(lpAppName)のパラメータ名です。これは、シングルアプリケーション/マルチセクションINIを使用すると正確ではありません。

ただし、INI関数は遅いです。です。多くの場合、ファイル全体を読み込んで読み込み、必要な部分を探しています。連続して呼び出すと、ファイルの多くが読み込まれて読み直されます。彼らは古くて最適化されていないので、通話を抑える必要があります。速度が必要な場合は、値をキャッシュしたり、一回のショットで読み込んだり、(XMLのように)何かを使用したりします。 GetPrivateProfileStringとWritePrivateProfileString APIのに

+8

を使用して、誰かに何かを使うのを避けるよう伝えるのは、 '古い'という言葉がほとんど役に立たないからです。それを使用することで何も問題はありません(APIの意味が「弱い」ということは何もわかりません)。 – Fred

関連する問題