Поддержание заполнения нулями в потоке строки

У меня есть область памяти, содержащая символы, которые представляют разные шестнадцатеричные слова. Когда я их печатаю, я хотел бы сохранить все символы, но с моим текущим кодом нулевое заполнение ненулевыми числами удаляется. Например, если у меня есть в памяти персонажи 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указывает на символы, я просто вынул цикл и использовал atoi(data_ptr)

-3

Решение

Попробуйте использовать

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

Ура!

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]