const char* を返す必要がある関数があります (他の関数のホスト全体がそれを使用することになります)。
次のように定義されたものがある場合、私はそれを知っています:
const char* Foo(int n)
{
// Some code
.
.
.
return "string literal, say";
}
それなら問題ありません。ただし、Foo が実行時にのみ決定できる文字列を返さなければならない場合 (パラメータ n に応じて ([0, 2^31-1] 内の任意の値を取る各 n は、返される文字列を一意に決定する) と言うのは正しいですか? )) 次に、ヒープを使用する必要があります (または、内部でヒープを使用する std::string のようなオブジェクトを返します)?
std::string は、私が達成したいことに対して重すぎるようです (少なくとも 2 つの関数がパーセルを渡す必要があります)。また、呼び出し元によって解放されるように Foo 内にメモリを割り当てることは、安全な方法とは思えません。この関数を必要とするオブジェクトへの参照を (簡単に) 渡すことはできません。
まだ考えていない単純なことはありますか?
編集
答えてくれてありがとう、私は std::string に行きます(私は、いくつかの char[] の内容を文字列リテラルを格納するのと同じ場所)。「重い」(そして、それらをコピーするのが思ったほど無駄ではないことに驚いています)に関しては、それは最良の言い方ではありませんでしたが、おそらく「異なる」は私の最初の不安に近かったでしょう。