我在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”。
我希望我足够清楚!
答案 0 :(得分:5)
尝试:
ostr << std::hex << std::setw(2) << std::setfill('0') << led_pwm;
您可能需要#include <iomanip>
。