const char*
を返すと、呼び出し元に出力メモリバッファを提供する必要があり、そのバッファのサイズを変更できないため、通常は関数からstd::string
を返します。C++の文字列リテラルからconst char *を返しますか?
しかし、const char*
が文字列リテラルから有効な場合はそれを返しますか? (有効な場合)可能性が速く、私は動的にstd::string
を構築するためのメモリを割り当てる必要はありませんようになり、このようにすること
const char* generate_c_string() {
return "ABC";
}
。
const char* x = "ABC";
が有効なため、おそらく有効です。その妥当性を実証するC++標準のリファレンスがありますか?
ポインタを返すときに呼び出し元がバッファを提供する必要がある理由がわかりません。 –
重複としてクローズしているにもかかわらず、両方とも依然として有用であるため、質問と回答を無効にしました。 – Tas
このような短い文字列では、最も一般的なstd :: string実装では動的メモリが割り当てられません。 [std :: stringの文脈で頭字語のSSOの意味](https://stackoverflow.com/questions/10315041/meaning-of-acronym-soso-in-the-context-of-stdstring) –