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

Как преобразовать long в строку на С++?

Как преобразовать long в string в С++?

4b9b3361

Ответ 1

Вы можете использовать stringstream.

#include <sstream>

// ...
std::string number;
std::stringstream strstream;
strstream << 1L;
strstream >> number;

В стандартной библиотеке для вашего компилятора обычно есть некоторые собственные функции C, которые тоже делают это. Я предпочитаю более "портативные" варианты.

C способ сделать это будет с sprintf, но это не очень безопасно. В некоторых библиотеках есть новые версии, такие как sprintf_s, которые защищают от переполнения буфера.

Ответ 2

В С++ 11 есть фактически std:: to_string и std:: to_wstring функции в <string> .

string to_string(int val);
string to_string(long val);
string to_string(long long val);
string to_string(unsigned val);
string to_string(unsigned long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string (long double val);

Ответ 3

Хорошо, если вы поклонник copy-paste, вот он:

#include <sstream>

template <class T>
inline std::string to_string (const T& t)
{
    std::stringstream ss;
    ss << t;
    return ss.str();
}

Ответ 5

int main()
{
    long mylong = 123456789;
    string mystring;
    stringstream mystream;
    mystream << mylong;
    mystring = mystream.str();
    cout << mystring << "\n";
    return 0;
}

Ответ 6

Я не знаю, что это за домашнее задание, но, скорее всего, учитель не хочет отвечать, когда вы просто называете "магическую" существующую функцию (даже если это рекомендуемый способ сделать это), но он хочет видеть, можете ли вы реализовать это самостоятельно.

В те дни мой учитель говорил что-то вроде "Я хочу посмотреть, можете ли вы сами программировать, а не если вы можете найти его в системе". Ну, как он ошибался;)..

В любом случае, если ваш учитель тот же, вот трудный способ сделать это.

std::string LongToString(long value)
{
  std::string output;
  std::string sign;

  if(value < 0)
  {
    sign + "-";
    value = -value;
  }

  while(output.empty() || (value > 0))
  {
    output.push_front(value % 10 + '0')
    value /= 10;
  }

  return sign + output;
}

Можно утверждать, что использование std::string не является "трудным путем", но я думаю, что подсчитывается в фактическом агоризме.

Ответ 7

Существует несколько способов. Прочтите String Formatters of Manor Farm для углубленного сравнения.

Ответ 8

   #include <sstream>


   ....

    std::stringstream ss;
    ss << a_long_int;  // or any other type
    std::string result=ss.str();   // use .str() to get a string back

Ответ 9

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

long val = 12345;
std::string my_val = std::to_string(val);

Ответ 10

Отъезд std::stringstream.

Ответ 11

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

Просто взгляните на программу spreedsheet (например, Calc/Excel). Вы хотите, чтобы он округлялся до ближайшего миллиона, с скобками, если он отрицательный, всегда, чтобы показать знак.... Является ли число реальным представлением чего-то еще, если вы покажете его в Oractal или Hex?

До сих пор ответы дали вам определенный вывод по умолчанию, но, возможно, не правильный.

Ответ 12

Если вы выполняете кодирование, а оператор похож на входное целое число, если вы хотите преобразовать его в строку, то вместо преобразования непосредственно принимайте ввод как строку. И используйте это как строку

Ответ 13

Как обычно я это делаю с помощью sprintf. Поэтому в течение долгого времени вы можете сделать следующее, предполагая, что вы используете 32-битную архитектуру:

char buf[5] = {0}; // one extra byte for null    
sprintf(buf, "%l", var_for_long);