yaml ファイルから 16 進値を取得する際に問題が見つかりました。0x80000000 以上の 16 進値を取得できませんでした。以下はサンプル C++ プログラムです。
// ymlparser.cpp
#include <iostream>
#include <fstream>
#include "yaml-cpp/yaml.h"
int main(void)
{
try {
std::ifstream fin("hex.yaml");
YAML::Parser parser(fin);
YAML::Node doc;
parser.GetNextDocument(doc);
int num1;
doc["hex1"] >> num1;
printf("num1 = 0x%x\n", num1);
int num2;
doc["hex2"] >> num2;
printf("num2 = 0x%x\n", num2);
return 0;
} catch(YAML::ParserException& e) {
std::cout << e.what() << "\n";
}
}
hex.yaml
hex1: 0x7FFFFFFF
hex2: 0x80000000
エラーメッセージはこちら。
$ ./ymlparser
num1 = 0x7fffffff
terminate called after throwing an instance of 'YAML::InvalidScalar'
what(): yaml-cpp: error at line 2, column 7: invalid scalar
Aborted
環境
yaml-cpp : svn、March.22.2010 または v0.2.5 から取得
OS : Ubuntu 9.10 i386
今、yaml-cpp の値を 16 進数で取得する必要がありますが、わかりません。別の方法で入手する方法を教えてください。
ありがとう、