sollten Sie in der Lage sein zu dem, was Ausgabeformat unter Verwendung von Standard-I/O-Manipulatoren will angeben:
#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
bemerken jedoch, dass ein thread::id
braucht nicht eine Nummer zu sein. Es kann sich auch um eine Nummer handeln, die jedoch auf andere Weise als auf der Standardausgabe ausgegeben werden kann, als wenn diese Nummer in std::cout
eingegeben wird.
Die C++ 11 Standardspezifikation der Überlastung der operator <<
Annahme eines std::thread::id
(was ich in ähnlicher Weise zu verhalten nehmen Boost-Korrespondent Überlastung für boost::thread::it
), sagt:
[...] Fügt ein nicht näher bezeichnet Textdarstellung von ID in out
.
Dies bedeutet, dass die Darstellung nicht eine Zahl sein kann, in welchem Fall der Formatierung Manipulatoren wie std::hex
, std::dec
oder std::oct
keinen Einfluss darauf haben kann.
Ich denke, 'get_id' gibt einen Zeiger auf eine Thread-spezifische Datenstruktur zurück. Die Zeiger sind nicht von 'dec' usw. betroffen. – celtschk