Bjarne Stroustrup によるThe C++ Programming Language の第 3 版を読んでいて、すべての演習を完了しようとしています。セクション 6.6 から演習 13 へのアプローチ方法がよくわからないので、洞察を得るためにスタック オーバーフローに目を向けようと思いました。問題の説明は次のとおりです。
2 つの C スタイルの文字列引数を取り、引数を連結した単一の文字列を返す関数cat()を作成します。結果のストアを見つけるにはnewを使用します。
これまでのコードは次のとおりです。何をすべきかわからない疑問符が付いています。
? cat(char first[], char second[])
{
char current = '';
int i = 0;
while (current != '\0')
{
current = first[i];
// somehow append current to whatever will eventually be returned
i++;
}
current = '';
i = 0;
while (current != '\0')
{
current = second[i];
// somehow append current to whatever will eventually be returned
i++;
}
return ?
}
int main(int argc, char* argv[])
{
char first[] = "Hello, ";
char second[] = "World!";
? = cat(first, second);
return 0;
}
そして、ここに私の質問があります:
- newを使用してストアを検索するにはどうすればよいですか? 何か別の C スタイルの文字列を作成するためにnew
std::string* result = new std::string;
を使用する必要がありますか? - 前の質問に関連して、cat() から何を返す必要がありますか? newを使用する必要がある場合は、ポインターが必要になると思います。しかし、何へのポインタですか?
- この問題では、 deleteを使用してメモリを解放することについては言及していませんが、newを使用して割り当てを行っているため、使用すべきであることはわかっています。戻る直前に、メインの最後で削除する必要がありますか?