2024年のうちにやっておきたいこと、ここで宣言しませんか?

質問させて頂きます。
開発環境はVC++.netです。

CString型の文字列連結について教えて頂きたく。

CString Test[_MAX_FNAME+1];
という変数にがあるとします。
Test変数のデータは
Test[0]には"2"
Test[1]には"1"
が格納されてるとします。

Test変数のデータをCString Text1という変数に
以下のようなソースで文字列連結処理を行ったのですが、だめでした。
何がいけないのでしょうか?

for(int i = 0; i <= 2; i++)
{
Text1 += Test[i];
}

実行結果は
Text1には"2"が格納されたままでした。

実際はText1には、"2""1"となってほしい。

分かりにくい説明とは思いますが、
回答、ヒントなどを頂けますでしょうか
宜しくお願い致します。

それと、もしよかったら、Text1の格納データは
"2","1"としたいので、カンマ区切りのやりかたなども
ヒントを頂けたら幸いです。

以上です。
宜しくお願い致します。

A 回答 (2件)

まずNO1のプログラムをコピーして


動かしてみてください。

それでも結果は"2"になりますか?

この回答への補足

No1のプログラムでは、正しく「"2""1"」となりました。

なぜ、私のプログラムでは、ダメなのでしょうか???

補足日時:2004/08/30 11:12
    • good
    • 0
この回答へのお礼

色々とありがとうございます。

なぜ、できなかったのかとういう、結論はでなかったのですが、一つメソッドを作成し、値を無理やり代入する事で出来ました。

また、投稿する事があると思いますが、その時は
宜しくお願い致します。

お礼日時:2004/08/30 16:37

CString Test[10];


CString Text1="";
Test[0]="\"2\"";
Test[1]="\"1\"";

for(int i = 0; i <= 2; i++)
{
Text1 += Test[i];
}

出力は "2""1" になりましたが・・・
中に入っているデータは正しいですか?

この回答への補足

デバッカでみてみましたが、Test[1],[2]には正しい
値が入っていました。

デバッカで追っていくと、CStrigT Operator+=()でreturnされる(*This)が常にTest[1]の値です。

なぜ、でしょうか?

Text1 = Test[i];で行えば、上書きされてしまうのですが、値は正常に入ります。

以上です。

回答の方をよろしくお願い致します。

補足日時:2004/08/27 13:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A