Как я использую манипулятор для форматирования моего шестнадцатеричного вывода с заполненными левыми нулями

Небольшая тестовая программа ниже распечатывает:

И число SS =3039

Я хотел бы, чтобы число распечатало с заполненными левыми нулями, таким образом, что общая длина равняется 8. Так:

И Число SS =00003039 (заметьте дополнительные нули, оставленные дополненными),

И я хотел бы знать, как сделать это использование манипуляторы и stringstream как показано ниже.Спасибо!

Тестовая программа:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>

int main()
{

    int i = 12345;
    std::stringstream lTransport;

    lTransport << "And SS Number IS =" << std::hex << i << '\n';

    std::cout << lTransport.str();

}
10
задан Cœur 26 April 2017 в 14:43
поделиться

3 ответа

Вы смотрели на манипуляторы setfill и setw библиотеки?

#include <iomanip>
...
lTransport << "And SS Number IS =" << std::hex << std::setw(8) ;
lTransport << std::setfill('0') << i << '\n';

Я получаю следующий результат:

And SS Number IS =00003039
9
ответ дан 3 December 2019 в 23:49
поделиться

Вы можете использовать функции setw и setfill следующим образом:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <iomanip>

using namespace std;

int main()
{    
    int i = 12345;
    std::stringstream lTransport;

    lTransport << "And SS Number IS =" << setfill ('0') << setw (8)<< std::hex << i << '\n';    
    std::cout << lTransport.str();  // prints And SS Number IS =00003039    
}
1
ответ дан 3 December 2019 в 23:49
поделиться

Я бы использовал:

cout << std::hex << std::setw(sizeof(i)*2) << std::setfill('0') << i << std::endl;
3
ответ дан 3 December 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: