C ++ Int для String с использованием ostringstream или stringstream - PullRequest
4 голосов
/ 10 января 2012

Я использовал 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;

1 Ответ

11 голосов
/ 10 января 2012

Существует третья, которую вы не упомянули, istringstream, которую вы не можете использовать (ну, вы могли бы, но она была бы другой, вы не можете << istringstream).

stringstream - это и ostringstream, и istringstream - вы можете << и >> в обе стороны, входить и выходить.

С ostringstream вы можете только войти с <<, и вы не можете выйти с >>.

На самом деле нет разницы, вы можете использовать любой способ для преобразования строк в целые числа. Если вы хотите сделать это как можно быстрее, я думаю, что у boost::lexical_cast есть этот заголовок, или вы можете использовать функцию itoa, которая может быть быстрее, чем stringstream, но вы потеряете преимущества C ++ и стандартной библиотеки, если вы используете itoa (вы должны использовать C-строки и т. д.).

Кроме того, как сообщил нам Бенджамин Линдли, C ++ 11 обладает ультрамагическим std::to_string.

...