整数から文字列に転換したいですが、どうすればいいですか??
#include <stdio.h>
#include <String>
using namespace std;
int main(){
int a = 123;
int b = 456;
string A,B,C;
sprintf((char *)A,%d,a);
sprintf((char *)B,%d,b);
C = A + B;
printf(%s\n,C);
}
エラー error C2440: '型キャスト' : 'std::string' から 'char *' に変換できませ
ん。
int a = 123;
int b = 456;
string A,B,C;
char buf[1024];
sprintf(buf, %d, a);
A = buf;
sprintf(buf, %d, b);
B = buf;
C = A + B;
printf(%s\n, C.c_str());
あと、stringstreamを使う方法もある。
もっと良い方法もありそうだけど、今思いつかない、or 知らない。
> あと、stringstreamを使う方法もある。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(){
int a = 123;
int b = 456;
string A,B,C;
ostringstream stream;
stream << a;
A = stream.str();
cout << A << endl;
stream.str("); // 一旦クリアしないと前回のが残る
stream << b;
B = stream.str();
cout << B << endl;
C = A + B;
cout << C << endl;
}
> もっと良い方法もありそうだけど
Boost.lexical_cast とかですかねー
# ナカミは stringstream なんだけども
ちなみにですが、
string A,B,C;
sprintf((char *)A,%d,a);
sprintf((char *)B,%d,b);
この記述の何処がまずいのかちゃんと理解しておいた方が良いですよ。
間違いから得られる知識もとても大事ですから。
こんなのを用意してあげるといいです。
std::string to_string(int value)
{
std::stringstream ss;
ss << value;
return ss.str();
}
int value = 314;
std::string str = to_string(value); // 文字列に変換