我对c ++缺乏经验,但可以使用一些帮助。我正在尝试编写一个从外部.txt文件中读取一行的小函数,然后将十六进制值写入一个short int。
示例:
从外部文本文件读取行:7c00
代码:
short end_addr = 0x7c00
我已经有了从外部文件读取行的代码,只需要知道如何将字符信息(7c00)保存为短的end_addr为十六进制0x7c00。
我需要为它写保护我想也是如此,如果有太多字符(例如7c0010)或不正确的字符(例如zyx4)那么会出现错误,但现在真的需要帮助转换算法。谢谢你的帮助!
答案 0 :(得分:0)
我建议调查boost::lexical_cast
以获得简单的界面和正确的错误处理。
此代码不处理错误,但您可以通过验证整行读取来添加错误处理。
#include <iostream>
#include <fstream>
int main()
{
std::ifstream f("some_file");
short x;
f >> std::hex >> x;
std::cout << "Hexadecimal value: " << std::hex << x << std::endl;
std::cout << "Decimal value: " << std::dec << x << std::endl;
}
解释std::hex in C++ reference
因此std::hex
将默认数字基数更改为16,std::dec
将其更改为10。