このような:
// allocate memory for n char pointers dynamically.
char ** lit = static_cast<char**>(::operator new(n * sizeof(char*)));
for (unsigned int i = 0; i != n; ++i)
{
lit[i] = static_cast<char*>(::operator new(length_of_string_i)); // #1
// populate lit[i] with data
}
i
#1 とマークされた行に適切に貼り付ける必要がある th 文字列の長さを決定する何らかの方法が必要です。に注意してください。そのsizeof(char) == 1
ため、内部割り当てで何も乗算する必要はありません。(必要に応じてstd::malloc
の代わりに使用できますが、使用する必要があります。) 完了したら、クリーンアップすることを忘れないでください。::operator new
#include <cstdlib>
もちろん、これはあなたが求めたものの文字通りの翻訳に過ぎません。C++ では、通常、生のメモリ割り当てよりもオブジェクトの作成を優先します。これは次のようになります。
// construct n char pointers dynamically
char ** lit = new char*[n];
for (unsigned int i = 0; i != n; ++i)
{
lit[i] = new char[length_of_string_i];
// populate lit[i] with data
}
ただし、array-new は絶対に使用しないでください。これは良いコンセプトではなく、良い C++ となることはめったにありません。
したがって、これをまったく行うべきではなく、代わりに次を使用する必要があります。
std::vector<std::string> lit(n);