2010年5月29日土曜日

VC++:Stringの取り扱い

最近OpenCVなどを使うこともあり、VC++を使い始めました。が、文字列の取り扱いには苦労しますね(^^; Rubyなんかだと簡単にできることがいちいちキャストしたりなんかしないといけなくて、そのたびにググる必要があり、時間がかかります。

例えば、VC++からDOSコマンドを呼び出すために

system("ruby abc.rb arg1 arg2")

などとしたいのですが、そのときにこの引数を

String^ arg1 = "1"
String^ arg2 = "2"
command = "ruby abc.rb "+arg1+" "+arg2
system(command)

などとすると String^はchar *に変換出来ませんというようなエラーになってしまいます。systemへの引数はchar *だけど、commandはString^だからエラーだそうです。command.to_charのようなメソッドはないんでしょうかねえ。結局ここにあるような方法を利用して String^をchar *に変換するはめになるのですが、なんとかなりませんかね、これ(^^;

2 件のコメント:

alt-native さんのコメント...

std::string::c_str()ならばchar*を返しますが。。。。
STLは制約ですか?
http://www.cppll.jp/cppreference/cppstring.html

Oz さんのコメント...

すみません。今日までコメントの見方を知らなかった(^^;

情報ありがとうございます。調べさせていただきます(_o_)