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