-3

我有一个存储区,其中包含代表不同十六进制单词的字符。当我打印它们时,我想保留所有字符,但使用我当前的代码,非零数字中的零填充被剥离。例如,如果我有0000它输出的内存字符,0000但如果我有0001它输出1。我目前正在使用字符串流,但也尝试使用字符数组来构造字符串(请参阅注释):

stringstream ss;
char* data_ptr = sets[set_index]->get_block(block_index)->get_word(word_index);
for (int d = 0; d < 2 * bytes_word; d++){
    ss << *(data_ptr + d);
}
data = ss.str();

//char* data_ch = new char[2 * bytes_word];
//char* data_ptr = sets[set_index]->get_block(block_index)->get_word(word_index);
//for (int d = 0; d < 2 * bytes_word; d++){
//  data_ch[d] = *(data_ptr + d);
//}
//string data(data_ch);
//delete[] data_ch;

由此,我倾向于当我将字符串传递给标准输出时实际上可能会完成剥离,我使用cout << data;,因为我的调试模式在两种情况下都显示字符串的内容包含所有 0。如果是这样,我该如何解决?

编辑 - 已解决 正如在接受的答案中发布的那样,必须使用setfill()并且setw()我不知道。起初这并没有解决问题,因为data_ptr指向字符,我只是取出for循环并使用atoi(data_ptr)

4

1 回答 1

8

尝试使用

 std::cout << std::setfill('0') << std::setw(4) << data;

干杯!

于 2016-01-12T20:53:39.243 回答