1

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

例子:

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

代码:

短端地址 = 0x7c00

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

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

4

1 回答 1

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;
}

解释C++ 参考中的 std::hex 因此std::hex将默认数字基数更改为 16,然后std::dec将其更改回 10。

于 2012-08-07T19:01:23.157 回答