ある関数から文字列を取得しようとしてます。
通常、returnで文字列を返せば簡単だと思うのですが、文字列型の引数に値を設定して返したいと考えています。
どのデータ型を使って、どのように引数を宣言すればいいか教えてください。
※LPSTRを使用してもうまくいきませんでした。
std::string &ではだめですか?
LPSTR でできると思いますが。
どういうコードを書いたらどううまく行かなかったのでしょうか。
#それとも、LPSTR はポインタ渡しで、参照渡しじゃないという話かな?
例えば以下のようなコードになります。
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& にします。
皆様のアドバイスを参考にさせていただいた結果、解決しました。
特にWIZ様 大感謝です。。。
ありがとうございました。
ツイート | ![]() |