在字符串流中保持零填充

时间:2016-01-12 20:47:54

标签: c++ stringstream zero-pad

我有一个包含代表不同十六进制字的字符的内存区域。当我打印它们时,我想保留所有字符但是使用我当前的代码零非自动数字填充被剥离。例如,如果我在内存中有字符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

1 个答案:

答案 0 :(得分:3)

尝试使用

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

干杯!

相关问题