Si dovrebbe essere in grado di specificare il formato di output desiderato utilizzando manipolatori I/O standard:
#include <iomanip>
// ...
std::cout << std::oct << boost::this_thread::get_id() << std::endl;
// ^^^^^^^^
// Octal
std::cout << std::dec << boost::this_thread::get_id() << std::endl;
// ^^^^^^^^
// Decimal
std::cout << std::hex << boost::this_thread::get_id() << std::endl;
// ^^^^^^^^
// Hexadecimal
Tuttavia, notare che un thread::id
non ha bisogno di essere un numero. Inoltre, potrebbe essere un numero, ma potrebbe essere stampato sullo standard output in modo diverso rispetto al semplice inserimento di tale numero in std::cout
.
Il C++ 11 Di serie il sovraccarico di operator <<
accettare un std::thread::id
(che presumo a comportarsi in modo simile a un sovraccarico di amplificare corrispondente boost::thread::it
), dice:
[...] inserisce un non specificata rappresentazione del testo dell'ID in out
.
Ciò significa la rappresentazione non può essere un numero affatto, nel qual caso la formattazione manipolatori come std::hex
, std::dec
o std::oct
non può avere alcuna influenza su di esso.
fonte
2013-06-17 19:38:08
Immagino che 'get_id' restituisca un puntatore a una struttura dati specifica del thread. I puntatori non sono influenzati da 'dec' ecc. – celtschk