c++読み書きプロファイル

11519 ワード

1.boostライブラリの使用
BoostBoostライブラリは移植可能でソースコードを提供するC++ライブラリであり、標準ライブラリのバックアップとして、C++標準化プロセスの開発エンジンの一つであり、C++言語標準ライブラリに拡張を提供するいくつかのC++ライブラリの総称である.BoostライブラリはC++標準委員会ライブラリワークグループのメンバーによって開始され、一部のコンテンツは次世代C++標準ライブラリのコンテンツになる見込みです.C++コミュニティでは大きな影響を及ぼし、正真正銘の「準」標準ライブラリです.Boostは,プラットフォーム間での強調,標準C++の強調のため,作成プラットフォームとは無関係である.ほとんどのboostライブラリ機能の使用は、対応するヘッダファイルを含めるだけでよく、正規表現ライブラリ、ファイルシステムライブラリなどの少数のリンクライブラリが必要です.ここではファイルシステムライブラリも使用しています.より具体的な説明はコミュニティリンクに移動してください.コミュニティリンクboost公式サイト:https://www.boost.org/boost Filesystem:https://www.boost.org/doc/libs/1_70_0/libs/filesystem/doc/index.htm
Boostパソコンをインストールするのはubuntuシステムで、コマンドをインストールすればいいです.他のシステムは試したことがありません.もちろんインストールパッケージをダウンロードしてインストールすることもできます.
sudo apt-get install libboost-all-dev

プロファイルの読み込み
プロファイルの内容は次のとおりです.
[System]
reboot_cnt=3

読み出し構成コードは次のとおりです.
#include 
#include 
#include 
#include 
#include 

int main(int argc, char* argv[]) {
  if (!boost::filesystem::exists("config.ini")) {
    std::cerr << "config.ini not exists." << std::endl;
    return -1;
  }
  boost::property_tree::ptree root_node, tag_system;
  boost::property_tree::ini_parser::read_ini("config.ini", root_node);
  tag_system = root_node.get_child("System");
  if(tag_system.count("reboot_cnt") != 1) {
    std::cerr << "reboot_cnt node not exists." << std::endl;
    return -1;
  }
  int cnt = cnt = tag_system.get<int>("reboot_cnt");
  std::cout << "reboot_cnt: " << cnt << std::endl;
  return 0;
}

g++コマンド
g++ -o test test.cc -lboost_system -lboost_filesystem

プロファイルの変更
プロファイルの内容は次のとおりです.
[System]
reboot_cnt=3

構成コードの変更は次のとおりです.
#include 
#include 
#include 
#include 
#include 

int main(int argc, char* argv[]) {
  if (!boost::filesystem::exists("config.ini")) {
    std::cerr << "config.ini not exists." << std::endl;
    return -1;
  }
  boost::property_tree::ptree root_node;
  boost::property_tree::ini_parser::read_ini("config.ini", root_node);
  root_node.put<int>("System.reboot_cnt", 10);
  write_ini("config.ini", root_node);
  return 0;
}

g++コマンド
g++ -o test test.cc -lboost_system -lboost_filesystem

変更されたプロファイルの内容は次のとおりです.
[System]
reboot_cnt=10

プロファイルの初期化
プロファイルが存在しないと仮定します.初期化コードは次のとおりです.
#include 
#include 
#include 
#include 
#include 

int main(int argc, char* argv[]) {
  if (!boost::filesystem::exists("config.ini")) {
    boost::filesystem::ofstream ofstream("config.ini", std::ios_base::out);
    ofstream << "[System]";
    ofstream << "
"; ofstream << "reboot_cnt=5"; ofstream.close(); } }

g++

g++ -o test test.cc -lboost_system -lboost_filesystem

:

[System]
reboot_cnt=5

:

[System]
reboot_cnt=3

:

#include 
#include 
#include 
#include 
#include 

#define FILE_MAX_SIZE 1024 * 40

int main(int argc, char* argv[]) {
  if (!boost::filesystem::exists("config.ini")) {
    std::cerr << "config.ini not exists." << std::endl;
    return -1;
  }
  char* data = (char*)malloc(sizeof(char) * FILE_MAX_SIZE);
  boost::filesystem::ifstream ifstream("config.ini", std::ios_base::in);
  ifstream.read(data, FILE_MAX_SIZE);
  std::cout << "data: " << std::endl;
  std::cout << data << std::endl;
  free(data);
  ifstream.close();
}

g++

g++ -o test test.cc -lboost_system -lboost_filesystem

 

 
:https://blog.csdn.net/u013736136/article/details/92843525