• ベストアンサー

CStringの配列要素を関数で受け渡しするには?

VC6を使っています。 それと当方、古いC言語しか分からず、 CStringの使い方で、ハマってしまっています。 よろしくお願いします。 (例) main関数側で、  CString buf[3]; buf[0] = "abc"; buf[1] = "012"; buf[2] = "xyz"; これを関数に渡して、それぞれの文字列内を加工したいのです。 func1(3,buf); ---(*) func1(int num, CString aaa) ----(*) {   int i;   for(i=0; i<num; i++){    if(i % 2 == 0){      aaa[i] += ".000";    }else{      aaa[i] += sprintf(".%03d",i);    }   } } たとえば、上記のような感じです。sprintf()の使い方が間違っている などもあるかも知れませんが、 それよりも、(*)の呼び出し側と引数定義の部分の書き方について、 ご存知の方お教えください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

CStringクラスに参照代入は使えない(とオモタ) CStringクラスをバッファアドレスとして指定できない(とオモタ) func1(3,buf); func1(int num, CString *aaa) {   int i;   CString workStr ;   for(i=0; i<num; i++){    if(i % 2 == 0){      workStr = aaa[i] + ".000";      aaa[i] = workStr ;    }else{      workStr.Format("%s.%03d",aaa[i],i);      aaa[i] = workStr ;    }   } }

goku3
質問者

お礼

お礼遅くなりました。 ご指摘の方法で解決できました。ありがとうございました。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

CString だろうが、int だろうが、配列の渡しかたは同じ。

goku3
質問者

お礼

当方には、具体的なコーディングはイメージできませんでしたが、 とにかく、そういうことなのですね。ありがとうございました。

関連するQ&A