使用ostringstream或stringstream将C++Int转换为字符串

C++ Int to String by using ostringstream or stringstream

本文关键字:转换 字符串 C++Int ostringstream stringstream 使用      更新时间:2023-10-16

我一直在使用stringstreamInteger转换为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;

还有第三个你没有提到,istringstream,你不能使用它(你可以,但不同的是,你不能将<<istringstream进行比较)。

stringstream既是ostringstream又是istringstream——您可以同时使用<<>>

使用ostringstream,您只能使用<<进入,而不能使用>>离开。

实际上没有什么区别,您可以使用任何一种方法将字符串转换为整数。如果你想以最快的方式完成,我认为boost::lexical_cast有这个标题,或者你可以使用itoa函数,它可能比stringstream更快,但如果你使用itoa,你就会失去C++和标准库的优势(你必须使用C字符串等)。

此外,正如Benjamin Lindley告诉我们的那样,C++11具有超大规模的std::to_string