C ++コンフィギュレーション・ファイルを読み書きします

1.ブーストライブラリを使用します

ブースト
ブーストライブラリは、バックアップ標準ライブラリはC ++標準化プロセスは、一般にC ++言語標準ライブラリのためのC ++ライブラリの拡張された数を提供することを目的とする開発エンジンの一つであるとして、C ++ライブラリのソースコードを提供する、ポータブルです。C ++標準化委員会図書館ワーキンググループのメンバーによって開始ライブラリをブースト、その内容の一部は、C ++標準ライブラリのコンテンツの次の世代になると期待されています。コミュニティへの影響が非常に大きいC ++では、それは本当に「準」標準ライブラリです。書くために、プラットフォームに関係なく、標準C ++に重点を置いて、ためのクロスプラットフォームを重視のブースト。大半は、単にブーストライブラリ関数を使用して、ライブラリをリンクするために必要な適切なヘッダファイル、(などの正規表現ライブラリ、ファイルシステム、ライブラリ、など)いくつかが含まれます。ここでは、ファイルシステムライブラリ、会場とコミュニティへのリンクのより具体的な説明を使用しています。
コミュニティリンクは
公式サイトを後押し:https://www.boost.org/
ブーストファイルシステム:https://www.boost.org/doc/libs/1_70_0/libs/filesystem/doc/index.htm


インストール・ブースト・
PC Ubuntuのシステムであり、あなたはコマンドをインストールすることができ、他のシステムでは試していません。もちろん、インストール用のインストールパッケージをダウンロードすることができます。

sudoのAPT- GET libboost-すべて-devのインストール

設定ファイルを読み込みます

設定ファイルを次のように

[システム] 
reboot_cnt = 3

構成コードを読んで、次のとおりです。

#include <ブースト/ filesystem.hpp> 
の#include <ブースト/ファイルシステム/ fstream.hpp> 
の#include <ブースト/ property_tree / ini_parser.hpp> 
の#include <ブースト/ property_tree / ptree.hpp> 
の#include <iostreamの> INTメイン(int型のargc、char型 * ARGV []){
   場合(後押し::ファイルシステムを::(存在する!" のconfig.ini " )){ 
    のstd :: CERR << " のconfig.iniが存在しません。" << はstd ::てendl;
    戻る - 1 
  } 

 
  ブースト:: property_tree :: ptreeでroot_nodeに、tag_system。
  :: property_tree :: ini_parser :: read_ini(高めのconfig.ini " ;、root_nodeに)
  tag_system(= root_node.get_child " システム" );
   場合(tag_system.count(" reboot_cnt "!)= 1 ){ 
    のstd :: CERR < < reboot_cntノードが存在していません。" << はstd ::てendl;
     リターン - 1 ; 
  } int型。CNT = CNT = tag_system 取得 < 整数 >(" reboot_cnt " ); 
  のstd :: coutの <
  reboot_cnt:<< CNT << はstd ::てendl;
  リターン 0 ; 
}

G ++のコマンド

G ++ -oテストtest.cc -lboost_system -lboost_filesystem

設定ファイルを変更します。

設定ファイルを次のように

[システム] 
reboot_cnt = 3

構成コードを修正し、次のとおりです。

#include <ブースト/ filesystem.hpp> 
の#include <ブースト/ファイルシステム/ fstream.hpp> 
の#include <ブースト/ property_tree / ini_parser.hpp> 
の#include <ブースト/ property_tree / ptree.hpp> 
の#include <iostreamの> INTメイン(int型のargc、char型 * ARGV []){
   場合(後押し::ファイルシステムを::(存在する!" のconfig.ini " )){ 
    のstd :: CERR << " のconfig.iniが存在しません。" << はstd ::てendl;
    戻る - 1 
  } 
  :: property_tree :: ini_parser ::後押し

 
  ブースト:: property_tree :: ptreeでroot_nodeに。 config.iniの" 、root_nodeに); 
  root_node.put < 整数 >(" System.reboot_cnt "10 ); 
  write_ini(" config.iniの" 、root_nodeに);
  リターン 0 ; 
}

G ++のコマンド

G ++ -oテストtest.cc -lboost_system -lboost_filesystem

次のように設定ファイルの内容は変更します:

[システム] 
reboot_cnt = 10

設定ファイルを初期化するために、ファイルを書き込むためのフォーム

コンフィギュレーション・ファイルが存在しないと仮定し、以下のように、初期化コードは次のようになります。

#include <ブースト/ filesystem.hpp> 
の#include <ブースト/ファイルシステム/ fstream.hpp> 
の#include <ブースト/ property_tree / ini_parser.hpp> 
の#include <ブースト/ property_tree / ptree.hpp> 
の#include <iostreamの> INTメイン(int型のargc、char型 *のARGV []){
   場合(!後押し::ファイルシステムは::(存在" のconfig.ini " ){)
    後押し::ファイルシステム:: ofstreamのofstreamの(" config.iniの"、のstd :: ios_base :: ); 
    ofstreamの << " [システム] " 

<< " \ nを" ; 
    ofstreamの << " reboot_cnt = 5 " ; 
    ofstream.close(); 
  } 
}

G ++のコマンド

G ++ -oテストtest.cc -lboost_system -lboost_filesystem

次のように初期化後の設定ファイルの内容は次のとおりです。

[システム] 
reboot_cnt = 5

ファイル全体を読み込み

設定ファイルを次のように

[システム] 
reboot_cnt = 3

ファイル全体のコードを読んで、次のとおりです。

#include <ブースト/ filesystem.hpp> 
の#include <ブースト/ファイルシステム/ fstream.hpp> 
の#include <ブースト/ property_tree / ini_parser.hpp> 
の#include <ブースト/ property_tree / ptree.hpp> 
の#include <iostreamの> に#define FILE_MAX_SIZE 1024 * 40 int型(メインint型のargc、char型 * ARGV []){
   場合(!後押し::ファイルシステムを::(存在する" のconfig.ini " )){ 
    のstd :: CERRが << " のconfig.iniが存在しません。" < < はstd ::てendl;
    戻る - 1 




  *データ=(CHAR *)はmallocはsizeofCHAR)* FILE_MAX_SIZE)。
  後押し::ファイルシステム::はifstreamはifstream(" config.iniの"、のstd :: ios_base :: )。
  ifstream.read(データ、FILE_MAX_SIZE)。
  std :: coutの << " データ:" << はstd ::てendl; 
  std :: coutの <<データ<< はstd ::てendl;
  無料(データ); 
  ifstream.close(); 
}

G ++のコマンド

G ++ -oテストtest.cc -lboost_system -lboost_filesystem

 

 

オリジナルより転載:https://blog.csdn.net/u013736136/article/details/92843525

おすすめ

転載: www.cnblogs.com/chaofn/p/11718979.html