我有一个包含代表不同十六进制字的字符的内存区域。当我打印它们时,我想保留所有字符但是使用我当前的代码零非自动数字填充被剥离。例如,如果我在内存中有字符void someFunctionToManipulateVirtualTable(Animal * dog)
{
//some code to manipulate main's local variable a (of type A).
}
,则会输出0000
,但如果我有0000
,则会输出0001
。我目前正在使用stringstream,但也尝试使用字符数组来构造字符串(请参阅注释):
1
由此我倾向于在将字符串传递给stdout时实际执行剥离的事情,我使用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;
,因为我的调试模式在两种情况下显示字符串的内容以包含所有0的。如果是这样我怎么能解决它?
编辑 - 解决了
已发布的已接受答案必须使用我不知道的cout << data;
和setfill()
。这首先解决了这个问题,因为setw()
指向了字符,我只是取出了for循环并使用了data_ptr
答案 0 :(得分:3)
尝试使用
std::cout << std::setfill('0') << std::setw(4) << data;
干杯!