0

特定のコード パスを無効にするための構成ファイルがあります。yaml ファイルに bool オプションを追加しましたが、yaml-cpp がそれらをどのように処理するかを理解するのに苦労しています。Nodeドキュメントは推奨されるものよりも少し軽く、私のユース ケースに適合するものは何もありません。trueおよびとして返された文字列を手動で解析することもできますが、複数の記述スタイルが仕様に含まれているfalseため、フレームワークがサポートする必要があるようです。yaml-cpp から bool 値を取得する方法はありますか?truefalse

IsScalar私が見つけることができる最も近いものでした。

void LoadConfig(string file)
{
   Node config = LoadFile(file);
   string targetDirectory;
   bool compile;
   if (config["TargetDirectory"])
      targetDirectory = config["TargetDirectory"].Scalar();
   if (config["Compile"])
      compile = Config["Compile"].IsScalar(); 
}
4

1 に答える 1

2

テンプレートas()メソッドが必要です:

config["Compile"].as<bool>()

または、デフォルト値を使用して 3 行ではなく 1 行ですべてを行うより適切な方法 (これにより、初期化されていない変数の潜在的なバグにも対処できます):

bool compile = config["Compile"].as<bool>(false);
于 2021-05-13T07:08:51.370 に答える