1

整数をchar配列に変換しようとしていますが、このコードに出くわしました

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

しかし、その値を印刷しようとすると、sまだ5が印刷されます。それがそれを行うことになっているのか、それとも何か間違ったことをしているのかわかりません。さらに、同じintをchar配列に変換できればと思います。しかし、私はその問題でどんな助けもいただければ幸いです。ありがとう!取得したコード:整数を文字列C ++に変換するためのitoa()の代替?

4

3 に答える 3

4

はい、そうすることになっています。結果に対して他の文字列タイプの操作(たとえば、他の文字列との連結、文字列内の文字の検索)を行う場合、(主に)数値を直接出力することとの違いに気付くでしょう。

ちょうど例:

std::cout << i+i;   // should print "10"
std::cout << s+s;   // should print "55"
于 2011-04-05T17:07:20.720 に答える
1

さらに、同じintをchar配列に変換できればと思います。

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.
于 2011-04-05T17:11:20.767 に答える
1

あなたがそのような問題について心配するのをやめたいなら、あなたは興味があるかもしれません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;
}
于 2011-04-05T18:16:46.280 に答える