Подтвердить что ты не робот

Преобразование int в std::string

Каков самый короткий путь, желательно встроенный, чтобы преобразовать int в строку? Ответы с использованием stl и boost будут приветствоваться.

4b9b3361

Ответ 1

Вы можете использовать std:: to_string в С++ 11

int i = 3;
std::string str = std::to_string(i);

Ответ 2

#include <sstream>
#include <string>
const int i = 3;
std::ostringstream s;
s << i;
const std::string i_as_string(s.str());

Ответ 4

Хорошо известный способ сделать это - использовать оператор потока:

#include <sstream>

std::ostringstream s;
int i;

s << i;

std::string converted(s.str());

Конечно, вы можете обобщить его для любого типа, используя функцию шаблона ^^

#include <sstream>

template<typename T>
std::string toString(const T& value)
{
    std::ostringstream oss;
    oss << value;
    return oss.str();
}

Ответ 5

Если вы не можете использовать std::to_string из С++ 11, вы можете записать его так, как он определен на cppreference.com:

std::string to_string( int value )Преобразует знаковое десятичное целое в строку с тем же содержимым, что и std::sprintf(buf, "%d", value) для достаточно большого buf.

Реализация

#include <cstdio>
#include <string>
#include <cassert>

std::string to_string( int x ) {
  int length = snprintf( NULL, 0, "%d", x );
  assert( length >= 0 );
  char* buf = new char[length + 1];
  snprintf( buf, length + 1, "%d", x );
  std::string str( buf );
  delete[] buf;
  return str;
}

Вы можете сделать больше с ним. Просто используйте "%g" для преобразования float или double в строку, используйте "%x" для преобразования int в шестнадцатеричное представление и т.д.

Ответ 6

Нестандартная функция, но ее реализовано в большинстве распространенных компиляторов:

int input = MY_VALUE;
char buffer[100] = {0};
int number_base = 10;
std::string output = itoa(input, buffer, number_base);

Обновление

С++ 11 ввел несколько std::to_string перегрузок (обратите внимание, что по умолчанию он равен base-10).

Ответ 7

Следующий макрос не такой компактный, как одноразовый ostringstream или boost::lexical_cast.

Но если вам нужно преобразовать в строку повторно в свой код, этот макрос будет более изящным в использовании, чем непосредственно обрабатывать строковые потоки или явное литье каждый раз.

Он также очень универсален, поскольку он преобразует все, что поддерживается operator<<(), даже в комбинации.

Определение:

#include <sstream>

#define SSTR( x ) dynamic_cast< std::ostringstream & >( \
            ( std::ostringstream() << std::dec << x ) ).str()

Объяснение:

std::dec - это метод без побочных эффектов, чтобы анонимный ostringstream в общий ostream так что поиск функции operator<<() корректно работает для всех типов. (Вы попадаете в проблему иначе, если первый аргумент является типом указателя.)

dynamic_cast возвращает тип обратно к ostringstream, чтобы вы могли называть его str().

Использование:

#include <string>

int main()
{
    int i = 42;
    std::string s1 = SSTR( i );

    int x = 23;
    std::string s2 = SSTR( "i: " << i << ", x: " << x );
    return 0;
}

Ответ 8

Вы можете включить реализацию itoa в свой проект.
Здесь itoa изменен для работы с std::string: http://www.strudel.org.uk/itoa/

Ответ 9

Вы можете использовать эту функцию для преобразования int в std::string после включения <sstream>:

#include <sstream>

string IntToString (int a)
{
    stringstream temp;
    temp<<a;
    return temp.str();
}

Ответ 10

Предположим, что у меня есть integer = 0123456789101112. Теперь это целое число можно преобразовать в строку классом stringstream.

Вот код в С++:

   #include <bits/stdc++.h>
   using namespace std;
   int main()
   {
      int n,i;
      string s;
      stringstream st;
      for(i=0;i<=12;i++)
      {
        st<<i;
      }
      s=st.str();
      cout<<s<<endl;
      return 0;

    }

Ответ 11

#include <string>
#include <stdlib.h>

Вот еще один простой способ конвертировать int в строку

int n = random(65,90);
std::string str1=(__String::createWithFormat("%c",n)->getCString());

Вы можете посетить эту ссылку для получения дополнительных методов https://www.geeksforgeeks.org/what-is-the-best-way-in-c-to-convert-a-number-to-a-string/