2011-01-20 25 views

答えて

5

いいえ。(CStringのが理解できるconst char*である)a_string.c_str()からの戻り値を使用する必要があります。

+0

ありがとうございます@Zac!だから、constは問題ではないが、実際にはstd :: stringをCString :: Format()のパラメータとして持つと思います。どのようにそれはコンパイルされていますか? – Jonathan

+1

あなたが2,3日以上のプログラミングをしているのなら、@ジョナサンは、うまくいきませんが、たくさんのことがコンパイルされることを知っています。 'CString :: Format'関数はすべての型パラメータを' ... '引数で受け取ります。これは任意の型の値を受け入れます。しかし、値がユーザ定義のクラス型( 'std :: string'を含む)である場合、C++標準では、結果として得られるプログラムの動作は未定義であると言います。形式的には、キャストなしで 'CString'を使うことも定義されていませんが、クラスは特別なトリックを使ってMFCがサポートするコンパイラで動作することを確認します。 –

+0

CStringをサポートする長さになるとは思えず、std :: stringを無視します。 MSだけがそれを行うことができると思います... – Jonathan

0

あなたはa_cstringを使用するとCString:

CString a_cstring(a_string.c_str()); 

std::stringを変換することができます。

c_string.Format("%s %s!", a_cstring, b_string); 
関連する問題