十进制值:cout<< dec<<提高:: this_thread :: get_id()

时间:2013-06-17 19:34:07

标签: c++ multithreading c++11 boost-thread

是否可以以十进制或八进制格式cout thread :: id?

std::cout << std::showbase;
cout << dec(or oct) << boost::this_thread::get_id() 

我总是十六进制,例如0xdf08。

1 个答案:

答案 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::hexstd::decstd::oct)可能对其没有任何影响。