• 締切済み

CString型の文字列連結について

質問させて頂きます。 開発環境は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"としたいので、カンマ区切りのやりかたなども ヒントを頂けたら幸いです。 以上です。 宜しくお願い致します。

みんなの回答

noname#11722
noname#11722
回答No.2

まずNO1のプログラムをコピーして 動かしてみてください。 それでも結果は"2"になりますか?

ryou0607
質問者

お礼

色々とありがとうございます。 なぜ、できなかったのかとういう、結論はでなかったのですが、一つメソッドを作成し、値を無理やり代入する事で出来ました。 また、投稿する事があると思いますが、その時は 宜しくお願い致します。

ryou0607
質問者

補足

No1のプログラムでは、正しく「"2""1"」となりました。 なぜ、私のプログラムでは、ダメなのでしょうか???

noname#11722
noname#11722
回答No.1

CString Test[10]; CString Text1=""; Test[0]="\"2\""; Test[1]="\"1\""; for(int i = 0; i <= 2; i++) { Text1 += Test[i]; } 出力は "2""1" になりましたが・・・ 中に入っているデータは正しいですか?

ryou0607
質問者

補足

デバッカでみてみましたが、Test[1],[2]には正しい 値が入っていました。 デバッカで追っていくと、CStrigT Operator+=()でreturnされる(*This)が常にTest[1]の値です。 なぜ、でしょうか? Text1 = Test[i];で行えば、上書きされてしまうのですが、値は正常に入ります。 以上です。 回答の方をよろしくお願い致します。

関連するQ&A

  • 文字列の連結

    文字列の連結 select * from test where testcolum=変数名 といった感じで、文字列と変数を連結したいのですがやり方がわかりません。 declare cdata varchar2(20); begin cdata:='sample'; 'select * from test where testcolum=' || cdata; end; 上のように、select文を動的に変更して実行したいのです。 よろしくお願いします。 /

  • CString 大量連結

    VC++6.0のMFCで開発してます。 プログラム内で CString str; str += ○○ とやって連結し終わった後にstrを使って 処理をする所があって試した所すごく遅く、文字列がかなり 長いと固まってしまいます。調べたらCStringの大量連結は パフォーマンスががた落ちって書いてありました。 何か良い方法はないでしょうか? ※連結は必須です。

  • 変数に格納している文字列の読み込み

    ある変数($text)にHTMLデータが格納されています。 その変数内の文字列を、1行ずつ読み込む方法はあるのでしょうか。 $textをファイルに変換して読み込むべきでしょうか。 ぞ存知の方、ご教授をお願いします。

    • ベストアンサー
    • PHP
  • CStringの文字列検索&抜き出しについて

    お世話になります。 ///////////開発環境/////////// WinXP VisualStudio 2005 SDI MFC 以上の環境にてプログラムしています。 現在CString型の変数の中にある文字列操作について悩んでいます。 例えば、 CString Test(:program!~program@123.456 TEST :message); このような内容が入ってるとします。 こんな時に例えばTESTを抜き出したい時にどうすればいいでしょうか? なお、毎回TESTという文字列ではなくTEST2などの文字列が変わるもの だとするとバイト数指定が出来なくて困っています。 バイト数指定しないでTESTのTのアドレスをGETしてそれを'\0'までを 切り抜くと:messageの部分まで取れてしまいます。 でもバイト指定が可変なので、出来ない・・。どうすればいいのでしょうか?? 同様にmessageの部分も毎回変わっていてバイト数指定出来ません。 こちらの方は、文字列の最後から:を探していって:が見つかったらその アドレスから'\0'までを切り出せばいいと思うのですが、もし messageの部分に:mess:ageこういうメッセージが送られて来た時に、 :ageしか取れなくなり、本当はmess:ageを切り抜きたいのです。 せっかくMFCのCStringを使っているので、strtokやstr~などのC言語関数 は避けたいのですが、何かいい案ありますでしょうか?? ご教示宜しくお願いいたします。

  • 文字列を日付型情報として計算したい

    こんばんわ、ASPでWebページを作成しているものです。 前段に色々な流れがあって結果的に text1 = "2004/05/25" text2 = "2004/06/08" と文字列で↑のようなデータが格納されている2つの変数を計算したい場合、単純に distance = text2 - text1 としてもできません。 これら2つの変数を日付として計算させたい場合はどのようにしてやれば出来ますでしょうか? お手数をお掛けしますが宜しくお願いいたします。

  • エクセルVBA 行を文字列連結している列を連結した

    エクセルシートで行を文字列連結している列を連結したいのですが・・ 行を文字列連結しているセル「AY4」は、 データー入力されていない時は、「0」表示しないとか「””」もしくは指定文字列にしています。 =IF(AT4=0,"連結なし",ConcatenateRangeText(C4:AY4)) もしくは =IF(AT4=0,"",ConcatenateRangeText(C4:AY4)) この「AY4」のセルでデーター入力されたものだけ文字列連結したい 画面上は空白だったり「連結なし」と表示されるのでコピーすれば良いのしょうが、ユーザーフォームのCommandButton11_Click()で処理したいのですが。 又、データー入力のある、行の文字列連結と列の文字列を一緒で出来ても良いのですが

  • 文字列の取得(BCB6.0)

    初歩的な質問なのですが・・・ テキストファイルから文字列を配列に格納したいです。 テキストファイルからTStringListには取得できているようなのですが。。。 テキストファイルの形式が 文字1 OFF、文字1 ON 文字2 OFF、文字2 ON     … となっており、コンマで区切って2次元配列に格納したいです。 どなたか宜しくお願い致します。 auto_ptr<TStringList> xSList(new TStringList()); xSList->LoadFromFile("D:\\sample.txt"); for(int i=0; i<=xSList->Count; i++) { AnsiString str = xSList->Strings[i];     …(ここで2次元配列に格納したい)

  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • 文字列をそれぞれテキストに表示する方法(初心者)

    質問:アスキーコードへの変換について VB6(初心者) で質問したものです。 回答してくださったかたありがとうございました。 また質問します、どうかよろしくおねがいします。 文字列を文字ごとに分けてそれぞれテキストやラベルに表示したいのですがどのようなプログラムになるのでしょうか? 例 mojiretu=ABC があるとしてAはtext1にBはtext2にCはtext3にそれぞれ 格納します。 text1.text=A text2.text=B text3.text=C mojiretuは変数文字列とします。 A、B、Cは変数ではなく普通の文字です。 テキストひとつに文字を全部いれるには mojiretu = ABC text1.text = mojiretu でいいと思うのですが、上の例がよくわかりません。 このことが書いてあるサイトでもいいのでどうか教えてくださいおねがいします。

  • 正規表現を使った文字列の抽出方法について

    正規表現を使った文字列の抽出方法について RHELを使っています。 テキストデータの中に、以下のようなデータが 百万行単位で並んでいます。(カンマ区切り、2列構成) 1, 1.24425 2, 3.25252 (中略) 13, 6.25365 14, 8,36222 (中略) 103633, 252525.0 最終的にやりたいことは2列目のデータのみの抽出です。 考え方として、正規表現で 「<任意の文字列の連続><カンマ>」という文字列を認識させ、 それを「空欄」で置換したいと考えています。 文字列の最後の文字をマッチさせる指定子が「$」という情報をWebで見つけたので まず、grepで見つけられるか以下のようにやってみたのですが、 grep -i ",$" test.txt $が環境変数と取られ、構文エラーとなってしまいます。 使い方がおかしいのでしょうか? ちなみに、うすうす感じている疑問として、「$」は文末にくるものしかマッチしなかったり しますでしょうか? カンマ区切りなので、表計算ソフトを使えなくもないですが、 行数がExcel2007の限界をよく超えるので、それ以外の方法で考えています。 アドバイスよろしくお願いいたします。

専門家に質問してみよう