-1

これは、クラス プロジェクトの一部です。必須ではありませんが、現在、文字を 1 つずつ割り当てているため、コードに数十行が追加されます。文字列リテラルとポインターを受け取る関数を作成し、リテラルを指す配列にコピーしたいと思います。

このようになります。

char* word = new char[12];
stringCopy(word, "thisisaword");
cout << word;

プログラムは「thisisaword」を画面に表示します。

授業なのでできることは限られています。

-- 動的に配列を正確に割り当ててサイズを変更する必要があります (一時的なサイズのない配列を使用し、その長さを見つけて正確なサイズの新しい配列を割り当てることにより)。

--文字列ライブラリ関数を使用できません。自分で作成する必要があります。

--オーバーロードされた演算子を使用できません

方法がわからないため、これまでのところ、これを実装するために何も試していません。与えられた 2 つのポインターでこれを行う関数を作成しました。これは非常に単純なので、コードを投稿する必要はありません。ソースを strlen し、削除してから適切な量を宛先ポインターに割り当て、文字列の長さによって制御されるループで文字ごとにコピーします。

4

1 に答える 1

1

私はこれらのタスクが大好きです。これが私の解決策です:

#include <iostream>

struct P { char const* s; std::size_t z; };
template <std::size_t z>
P s(char const(&s)[z]) { return { s, z }; }

int main()
{
    auto p(s("thisisaword"));
    char* word = new char[p.z];
    for (auto i(0);  (i<:word:> = i<:p.s:>); ++i) <%%>
    std::cout << word << '\n';
    delete[] word;
}
于 2013-10-01T23:03:14.887 に答える