# 締め出し食らってるもんだからー
ネタ元 → バイナリコード内の16進数での文字列検索
何に躓いてるのかよくわかんない... とりあえず8bitバイナリ列を16進でダンプしたいのかしら。
C++streamにこだわらなければ printf("%02X ", ...) でイッパツなんだけど、
敢えてstreamに固執してみるテスト ^^;
#include <sstream>
#include <iomanip>
template<typename InputIterator, typename OutputIterator>
OutputIterator hexdump(InputIterator first, InputIterator last,
OutputIterator out) {
std::ostringstream stream;
stream.fill('0'); // '0'詰め
while ( first != last ) {
unsigned int ch = static_cast<unsigned int>(*first);
stream << std::hex << std::setw(2) // 16進2桁
<< (ch & 0xff) << ' ';
++first;
}
std::string result = stream.str();
return std::copy(result.begin(), result.end(), out);
}
// おためし
#include <iostream>
#include <iterator>
int main() {
std::string input = "123ABC";
std::string output;
hexdump(input.begin(), input.end(), std::inserter(output, output.begin()));
std::cout << '[' << output << ']' << std::endl;
}