我一直在使用stringstream
将Integer
转换为String
,但之后我意识到可以使用ostringstream
完成相同的操作。
当我使用.str()
时,它们之间有什么区别?还有,有更有效的方法将整数转换为字符串吗?
示例代码:
//using ostringstream
ostringstream s1;
int i=100;
s1<<i;
string str_i=s1.str();
cout<<str_i<<endl;
//using stringstream
stringstream s2;
int i2=100;
s2<<i2;
string str_i2=s2.str();
cout<<str_i2<<endl;
答案 0 :(得分:11)
有三分之一的你没有提及,istringstream
,你不能使用(你可以,但它会有所不同,你不能<<
到{{1 }})。
istringstream
同时是stringstream
和ostringstream
- 您可以istringstream
和<<
两种方式进出。
使用>>
,您只能 进入ostringstream
,而您无法使用<<
。
没有什么区别,您可以使用任何一种方法将字符串转换为整数。如果您想以最快的方式执行此操作,我认为>>
具有该标题,或者您可以使用可能比boost::lexical_cast
更快的itoa
函数,但是您失去了优势C ++和标准库,如果你使用stringstream
(你必须使用C字符串等)。
另外,正如本杰明林德利告诉我们的那样,C ++ 11具有超灵性std::to_string
。