我发现从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";
}
}
Run Code Online (Sandbox Code Playgroud)
hex.yaml
hex1: 0x7FFFFFFF
hex2: 0x80000000
Run Code Online (Sandbox Code Playgroud)
错误信息在这里.
$ ./ymlparser
num1 = 0x7fffffff
terminate called after throwing an instance of 'YAML::InvalidScalar'
what(): yaml-cpp: error at line 2, column 7: invalid scalar
Aborted
Run Code Online (Sandbox Code Playgroud)
环境
yaml-cpp:从svn获取,2010年3月22日或v0.2.5
操作系统:Ubuntu 9.10 i386
我现在需要在yaml-cpp上获得hex值,但我不知道.请告诉我如何以另一种方式获得它.
谢谢,
有符号int的最大值是有效的0x7FFFFFFF.我很确定这是问题所在.
unsigned int如果您只是获得正数,请尝试使用.或者同时使用 long long有符号和无符号数字.
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |