我发现从 yaml 文件中获取十六进制值的问题。它无法获得 0x80000000 及以上的十六进制值。以下是一个示例 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 获取
操作系统:Ubuntu 9.10 i386
我现在需要在 yaml-cpp 上获取十六进制值,但我不知道。请告诉我如何以另一种方式获得它。
谢谢,