преобразование целого числа в строку C ++ - PullRequest
1 голос
/ 05 апреля 2011

Я пытаюсь преобразовать целое число в массив символов, и я наткнулся на этот кусок кода

int i = 5;
std::string s;
std::stringstream out;
out << i;
s = out.str();

Но когда я пытаюсь напечатать значение s, оно все равно печатает 5. Я не знаю, должно ли это делать или я делаю что-то не так? Кроме того, я бы предпочел, чтобы я мог преобразовать тот же int в массив символов. Но я был бы признателен за любую помощь в этом вопросе. Спасибо! Код взят из: Альтернатива itoa () для преобразования целого числа в строку C ++?

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011

Да, это должно быть сделано.Вы (в первую очередь) заметили бы отличие от простой печати числа напрямую, если вы выполняете какие-либо другие строковые манипуляции с результатом (например, объединяете его с другими строками, ищите символы в строке).

Например:

std::cout << i+i;   // should print "10"
std::cout << s+s;   // should print "55"
1 голос
/ 05 апреля 2011

Если вы хотите перестать беспокоиться о таких проблемах, вас могут заинтересовать boost/lexical_cast.hpp.

#include <boost/lexical_cast.hpp>
#include <string>
#include <iostream>

int main() {
  const int i=5;
  const char* s = boost::lexical_cast<std::string>(i).c_str();
  std::cout << s << std::endl;
}
1 голос
/ 05 апреля 2011

Кроме того, я бы предпочел, чтобы я мог преобразовать тот же int в массив символов.

char *charPtr = new char[ s.length() + 1 ] ; // s is the string in the snippet posted
strcpy( charPtr, s.c_str() ) ;

// .......

delete[] charPtr ; // Should do this, else memory leak.
...