是否可以以十进制或八进制格式cout thread :: id?
std::cout << std::showbase;
cout << dec(or oct) << boost::this_thread::get_id()
我总是十六进制,例如0xdf08。
答案 0 :(得分:7)
您应该能够使用标准I / O操纵器指定所需的输出格式:
#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
但请注意,thread::id
不一定是一个数字。此外,它可能是一个数字,但可以以不同于将该数字插入std::cout
的方式打印到标准输出。
C ++ 11标准规范operator <<
接受std::thread::id
的重载(我假设其行为类似于Boost对boost::thread::it
的对应重载),说:
[...]在
out
中插入一个未指定的文字表示。
这意味着表示可能根本不是数字,在这种情况下,格式操纵符(例如std::hex
,std::dec
或std::oct
)可能对其没有任何影响。