将int转换为C ++中包含2位数的字符串

时间:2014-11-17 23:29:00

标签: c++ converter

我在C ++中有以下代码,它应该采用“led_pwm”十六进制变量,并将其转换为字符串“led_pwm_string”。

long int led_pwm=0x0a;

std::ostringstream ostr;
ostr << std::hex << led_pwm; //use the string stream just like cout,
                             //except the stream prints not to stdout 
                             //but to a string.

std::string led_pwm_string = ostr.str(); //the str() function of the stream
                                         //returns the string

我对此代码的唯一问题是,对于0x00和0x0a之间的任何led_pwm值,它会转换为“led_pwm_string”中的单个数字。这会在以后给我带来麻烦。

我希望,在每种可能的情况下,“led_pwm_string”总是包含一个2位数的字符串。所以如果“led_pwm”是0x01(例如),则“led_pwm_string”将为“01”,而不仅仅是“1”。

我希望我足够清楚!

1 个答案:

答案 0 :(得分:5)

尝试:

ostr << std::hex << std::setw(2) << std::setfill('0') << led_pwm;

您可能需要#include <iomanip>