12

C++のprintf("%2.2x", var);toに相当するものが必要です。 コード: cerr<<

typedef unsigned char byte;  
static byte var[10];  
for(i=1; i<10; i++)  
   printf("%2.2x", var[i]);

アイデアは、デバッグを次のようなファイルにリダイレクトすることです: ./myprog 2>out.txt.
あまり聞かなければ説明もしてもらいたいです。
ありがとう!

4

4 に答える 4

22

を使用fprintf(stderr, ...)します。例:

fprintf(stderr, "%2.2x", var[i]);
于 2013-05-29T16:32:50.463 に答える
4

これは、C++ のストリーム マニピュレータを使用して行うことができます。たとえば、次のようになります。

#include <iostream>
#include <iomanip>
...
std::cerr << std::hex << std::setw(2) << std::setprecision(2) << (int)var[i];

私はここで正しいと思いますが、遊んでみて ください。setw

于 2013-05-29T16:40:16.277 に答える
3

別の方法は次を使用していboost::formatます:

std::cerr << boost::format("%2.2x") % static_cast<int>(var[i]);
于 2013-05-29T16:46:01.040 に答える
2
#include <iostream>
#include <iomanip>

void show_a_byte(unsigned char val) {
    std::ostream out(std::cerr.rdbuf());
    out << std::hex << std::setw(2) << std::setprecision(2)
        << static_cast<unsigned int>(val);
}

一時ostream共有cerrのバッファを使用して、マニピュレータが望ましくない副作用を残さないようにしましたcerr。( or or plain)を取得すると、生のバイトとしてコピーできると考えるため、static_castが必要です。ostreamsignedunsignedchar

于 2013-05-29T16:50:38.660 に答える