c ++ integer-> std :: string преобразование. Простая функция?

StackOverflow https://stackoverflow.com/questions/273908

  •  07-07-2019
  •  | 
  •  

Вопрос

Проблема: у меня есть целое число; это целое число должно быть преобразовано в тип stl :: string.

В прошлом я использовал stringstream для преобразования, и это было довольно громоздко. Я знаю, что способ C состоит в том, чтобы сделать sprintf , но я бы предпочел сделать метод C ++, который безопасен для типов (er).

Есть ли лучший способ сделать это?

Вот строковый подход, который я использовал в прошлом:

std::string intToString(int i)
{
    std::stringstream ss;
    std::string s;
    ss << i;
    s = ss.str();

    return s;
}

Конечно, это можно переписать так:

template<class T>
std::string t_to_string(T i)
{
    std::stringstream ss;
    std::string s;
    ss << i;
    s = ss.str();

    return s;
}

Однако у меня есть представление, что это довольно «тяжелая» реализация.

Зан заметил, что вызов довольно хорош:

std::string s = t_to_string(my_integer);

В любом случае, хороший способ был бы ... хорош.

  

Связанный:

     

Альтернатива itoa () для преобразования целого числа в строку C ++ ?

Это было полезно?

Решение

Теперь в C ++ 11 у нас есть

#include <string>
string s = std::to_string(123);

Ссылка на ссылку: http://en.cppreference.com/w/cpp/string/basic_string / to_string

Другие советы

Как упоминалось ранее, я бы порекомендовал повысить lexical_cast. Мало того, что он имеет довольно хороший синтаксис:

#include <boost/lexical_cast.hpp>
std::string s = boost::lexical_cast<std::string>(i);

это также обеспечивает некоторую безопасность:

try{
  std::string s = boost::lexical_cast<std::string>(i);
}catch(boost::bad_lexical_cast &){
 ...
}

Не совсем, в стандарте. В некоторых реализациях есть нестандартная функция itoa (), и вы можете посмотреть lexical_cast в Boost, но если вы придерживаетесь стандарта, это в значительной степени выбор между stringstream и sprintf () (snprintf (), если у вас есть).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top