1

有一个如何以它的面具unsigned long long形式打印它到?hexstd::string

我试图迭代二进制(值,如,,0001)掩码:00100100

std::stringstream str;
std::string result;
for (unsigned long long mask = 1; mask != 0; mask <<= 1) {
    str << mask;
    str >> result;
    std::cout << result << std::endl;
    str.flush();
}

但我只看到值== 1(请参阅此处的实时示例)。

所以我想知道如何打印所有可能的唯一位掩码unsigned long long

4

3 回答 3

1

你需要使用str.clear(),而不是str.flush()。看到这个十六进制部分

于 2013-03-19T11:14:40.127 回答
1

有一个如何以它的面具unsigned long long形式打印它到?hexstd::string

您需要用于std::hex以十六进制为基数打印数字,并注意要重用stringstream对象,您实际上需要通过 usingstr()方法清除其内容,并通过调用清除错误状态标志clear()

#include <iostream>
#include <sstream>

int main()
{
    std::stringstream str;
    std::string result;
    for (unsigned long long mask = 1; mask != 0; mask <<= 1)
    {
        // retrieve the string:
        str << std::hex << mask;
        str >> result;
        std::cout << result << std::endl;

        // clear the stringstream:
        str.clear();
        str.str(std::string());
    }
}

请参阅如何重用 ostringstream?:)

于 2013-03-19T11:23:09.900 回答
0

unsigned long long 的每个值都是唯一的。所以迭代它并看看这个问题 Is there a printf converter to print in binary format?

[编辑] 啊,我看到您只想要设置一位的值。好的,不要迭代,通过它。

于 2013-03-19T11:14:12.470 回答