web-dev-qa-db-ja.com

std :: thread :: idをc ++で文字列に変換する方法は?

_std::thread::id_をC++で文字列にタイプキャストする方法は? std::this_thread::get_id()によって生成された出力を文字列またはchar配列にタイプキャストしようとしています。

13
user2859777
auto myid = this_thread.get_id();
stringstream ss;
ss << myid;
string mystring = ss.str();
23
us2012

実際にはstd::thread::id isprintableusing ostreamthis を参照)。

だからあなたはこれを行うことができます:

#include <sstream>

std::ostringstream ss;

ss << std::this_thread::get_id();

std::string idstr = ss.str();
5
Nawaz

「変換」std::thread::idからstd::stringは、ユニークでありながら役に立たないテキストを提供します。あるいは、人間が簡単に識別できるように、それを小さな整数に「変換」することもできます。

std::size_t index(const std::thread::id id)
{
  static std::size_t nextindex = 0;
  static std::mutex my_mutex;
  static std::map<std::thread::id, st::size_t> ids;
  std::lock_guard<std::mutex> lock(my_mutex);
  if(ids.find(id) == ids.end())
    ids[id] = nextindex++;
  return ids[id];
}
4
Walter