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


TC  2005-04-19 03:00:58  No: 57050

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

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


YuO  2005-04-19 03:04:38  No: 57051

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


シャノン  2005-04-19 05:50:42  No: 57052

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

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


WIZ  2005-04-19 18:23:10  No: 57053

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

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 20:31:04  No: 57054

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加