4

我一直在使用stringstream转换IntegerString,但后来我意识到可以使用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;
4

1 回答 1

11

还有第三个你没有提到,istringstream你不能使用(你可以,但它会有所不同,你不能<<使用istringstream)。

stringstream既是一个ostringstream又是一个istringstream- 你可以<<>>两种方式,进出。

ostringstream只能带进去,<<不能带出去>>

没有真正的区别,您可以使用任何一种方式将字符串转换为整数。如果你想以最快的方式做到这一点,我认为boost::lexical_cast有这个标题,或者你可以使用itoa可能比 更快的函数stringstream,但是如果你使用,你会失去 C++ 和标准库的优势itoa(你必须使用 C-字符串等)。

此外,正如 Benjamin Lindley 告诉我们的那样,C++11 具有超神奇的std::to_string.

于 2012-01-09T20:59:21.310 回答