从外部文件读取字符串行并转换为十六进制

时间:2012-08-07 18:55:00

标签: c++ char hex type-conversion

我对c ++缺乏经验,但可以使用一些帮助。我正在尝试编写一个从外部.txt文件中读取一行的小函数,然后将十六进制值写入一个short int。

示例:

从外部文本文件读取行:7c00

代码:

short end_addr = 0x7c00

我已经有了从外部文件读取行的代码,只需要知道如何将字符信息(7c00)保存为短的end_addr为十六进制0x7c00。

我需要为它写保护我想也是如此,如果有太多字符(例如7c0010)或不正确的字符(例如zyx4)那么会出现错误,但现在真的需要帮助转换算法。谢谢你的帮助!

1 个答案:

答案 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。