Ваши требования очень странные, поэтому сложно дать правильный ответ.Кажется, что все решения до сих пор либо повторяются (хотя некоторые внутри std-функций), либо работают с прямым целым числом, что, кажется, идет вразрез с вашими требованиями?«шестнадцатеричное представление» подсказывает мне, что у вас есть число в виде строки.Если это так, то отсутствие использования циклов for (?) И принуждение нас к использованию потоковых манипуляторов делает это бесполезным.Если представление представлено в форме строки ascii, и нам не разрешено выполнять итерацию, тогда одно решение, которое не требует ни итерации, ни преобразования (которое, вероятно, будет повторяться само по себе), может использовать тот факт, что все буквенно-цифровые числау символов есть хотя бы один из 2 наборов MSB:
#include <iostream>
#include <string>
#include <cassert>
#include "boost\cstdint.hpp"
union StrInt
{
boost::uint64_t val;
char str[ sizeof( boost::uint64_t ) ];
};
int main()
{
std::string someString("A9999999" );
StrInt tmp;
assert( someString.size() <= sizeof( tmp.str ) );
memcpy( tmp.str, &someString[0], someString.size() );
std::cout << !!( tmp.val & 0xC0C0C0C0C0C0C0C0ul ) << std::endl;
}