在C ++中将八进制字符串转换为十进制字符串

时间:2014-02-02 22:04:09

标签: c++

将字符串保持八进制数转换为保持相同数字的十进制表示的字符串的最简单方法是什么?

我可以使用strtol将其转换为int值,然后使用stringstream再次转换为字符串:

string oct_number("203"); 

// converts into integer
int value = strtol(oct_number.c_str(), NULL, 8);

// converts int to decimal string
stringstream ss;
ss  << value;
string dec_number = ss.str();

但是:有没有更快捷的方法呢? 我对stringstream类的理解很差,我错过了什么?

2 个答案:

答案 0 :(得分:2)

std::string result;
Try
{
   result = std::to_string( std::stoi( oct_number, 0, 8 ) );
}
catch ( ... )
{
//...
}

答案 1 :(得分:0)

在c ++ 11中,您可以使用string dec_number = to_string (value);。 您也可以使用sprintf,但需要一些缓冲区:

char buf[64];
sprintf(buf,"%d",value);
string dec_number = buf;