文字列の参照渡しについて


TC  2005-04-18 18:00:58  No: 57050  IP: 192.*.*.*

ある関数から文字列を取得しようとしてます。
通常、returnで文字列を返せば簡単だと思うのですが、文字列型の引数に値を設定して返したいと考えています。
どのデータ型を使って、どのように引数を宣言すればいいか教えてください。

※LPSTRを使用してもうまくいきませんでした。

編集 削除
YuO  2005-04-18 18:04:38  No: 57051  IP: 192.*.*.*

std::string &ではだめですか?

編集 削除
シャノン  2005-04-18 20:50:42  No: 57052  IP: 192.*.*.*

LPSTR でできると思いますが。
どういうコードを書いたらどううまく行かなかったのでしょうか。

#それとも、LPSTR はポインタ渡しで、参照渡しじゃないという話かな?

編集 削除
WIZ  2005-04-19 09:23:10  No: 57053  IP: 192.*.*.*

例えば以下のようなコードになります。

void main() {
  char buf[100];
  f(buf);
}

// 引数の型は LPSTR でも多分大丈夫
void f(char* p) {
  strcpy(p, "abc");
}

但し、上記のコードでは main 関数で用意しているバッファ(buf)が固定の
100 バイトなので関数 f で引数 p に設定する文字列は末尾の '\0' を含めて
100 バイト以下でなくてはなりません。
関数 f で任意の長さの文字列を設定できるようにするには、動的にメモリ確保・
解放を行うか、引数の型を std::string& とか CString& にします。

編集 削除
TC  2005-04-19 11:31:04  No: 57054  IP: 192.*.*.*

皆様のアドバイスを参考にさせていただいた結果、解決しました。

特にWIZ様  大感謝です。。。

ありがとうございました。

編集 削除