如何打印std :: atomic <unsigned int =“”> </unsigned>的值

时间:2011-06-27 12:51:25

标签: c++ printing atomic

我在我的程序中使用std::atomic<unsigned int>。如何使用printf打印其值?因为如果我只使用%u它不起作用。我知道我可以使用cout,但我的程序中充斥着printf次调用,我不想替换它们。以前我使用的是unsigned int而不是std::atomic<unsigned int>,因此我只使用%u,因此打印工作正常。

2 个答案:

答案 0 :(得分:14)

template<typename BaseType>
struct atomic
{
    operator BaseType () const volatile;
}

使用类型转换来提取基础值。

printf("%u", unsigned(atomic_uint));

答案 1 :(得分:3)

另一个选项,您可以使用负载。例如:

std::atomic<unsigned int> a = { 42 };
printf("%u\n", a.load());