ページ 11

c++での文字列の扱いについて

Posted: 2008年8月03日(日) 18:36
by erin
はじめまして。
最近c++をはじめたのですが、過去にやっていたperlでは
普通に変数に文字列を代入することができていました。
( a = "あいうえお" のように)
自分で調べたところ、文字列を代入するにはchar型の変数を作り
strcpy( a , "あいうえお");
とやれば代入できるというところまではわかったのですが、
intのaとbという変数に数値が入っているとして、
「aの値,bの値」というようにaとbの間にコンマをはさんで変数に入れるにはどうすればいいのでしょうか?

Re:c++での文字列の扱いについて

Posted: 2008年8月03日(日) 19:05
by 管理人
 
コンマを挟んで変数に入れる?
文字列の話と最後の話は直接関係無いんですしょうか?

int a = 10 , b = 20;

とか

int a,b;
a = 10 , b = 20;

とか

int a,b;
a=10; b= 20;

とか色々かけると思いますが、こういう意味ではないのでしょうか?
 

Re:c++での文字列の扱いについて

Posted: 2008年8月03日(日) 19:27
by box
int a = 10;
int b = 20;

であるとして、
"10,20"
という文字列を組み立てたい、ということですか?
もしそういうことでしたら、

char s[80]; // 80は結果を格納するのにじゅうぶんな大きさであること
sprintf(s, "%d,%d", a, b);

とすれば、配列sの中身が 10,20 となります。

別の話でしたらフォローしてください。

Re:c++での文字列の扱いについて

Posted: 2008年8月03日(日) 19:32
by 管理人
なるほど、int型の数値を文字列に変換するということでしょうか?

Re:c++での文字列の扱いについて

Posted: 2008年8月03日(日) 19:40
by たかぎ
C++では、普通に変数に文字列を代入できますよ。
std::string a;
a = "あいうえお";
コンマを挟んで云々については、いくつか方法がありますが...
int a = 123;
int b = 456;
std::string c;
std::ostringstream oss;
oss << a << ',' << b;
c = oss.str();
というのが最も一般的な方法です。
ほかには、
int a = 123;
int b = 456;
std::string c;
c = boost::str(boost::format("%d,%d") % a % b);
といった方法もあります。
他にも方法がありますが、もっと面倒になりますね。
# 例外安全のことまで考えると、必ずしも面倒になるとはいえませんが...

Re:c++での文字列の扱いについて

Posted: 2008年8月03日(日) 20:19
by erin
書き方が悪かったですね、すみません。
boxさんの言っているように"10,20"という風にしたいということでした。

お三方とも返信ありがとうございます。
sprintfが一番簡単そうなのでそれを使ってみようと思います。
たかぎさんの方法も、今後使うことがでてきそうなので覚えておくことにします。
ありがとうございました。