1

私はC++にかなり不慣れですが、いくつかの助けを借りることができます。外部の.txtファイルから行を読み取り、16進値を短いintに書き込む小さな関数を作成しようとしています。

例:

外部テキストファイルから読み取った行:7c00

コード:

短いend_addr=0x7c00

外部ファイルから行を読み取るためのコードはすでにあります。文字情報(7c00)を16進数の0x7c00として短いend_addrに保存する方法を知っておく必要があります。

私もそれに対する保護を書く必要があるので、文字が多すぎる(たとえば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 に答える