0

私には3つの機能があります。各配列にコンテンツを追加するもの、すべてのコンテキストを出力するもの、およびその配列のすべての文字列をクリアするもの。私の質問は、文字列配列をクリアする関数の定義に関するものです。私のコードは、元の str[i] または str[0] (最初に追加された文字列を保持する配列の最初のスロット) を除いて、追加された各配列を削除します。何を追加する必要がありますか? 私は何かが欠けていますか?各配列スロットを NULL または str[i] == "" に設定するよりも、すべてをクリアした方がよいでしょう。

これが私の試みです:

void StringList::clear()
{
    for(int i=0;i<=numberOfStrings;i++)
    {
        for(int j=i;j<=numberOfStrings-1;j++)
        {
            str[j] = str[j+1];

        }

        numberOfStrings--;
    }


    cout<<"All strings cleared"<<endl;
}

このコードは、最初に追加された文字列以外のすべてをクリアします。考え?おそらく非常に単純で、私の脳は適切に機能していませんが、検索したものはすべて機能しません。

とにかくループせずにクリアする方法はありますか? str[numberOfStrings] を使用するだけですか?

4

1 に答える 1

2

std::stringclear() 関数があるため、最初の要素を除いて、各要素で呼び出す必要があるのはそれだけです。

void StringList::clear()
{
    // Start from 1 so that we won't clear the first string.
    for(int i = 1; i <= numberOfStrings; i++) {
            str[i].clear();
    }
    cout << "All strings cleared" << endl;
}
于 2013-06-08T04:46:10.200 に答える