清除String数组C ++

时间:2013-06-08 04:32:15

标签: c++ arrays function c-strings

我有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]?

1 个答案:

答案 0 :(得分:2)

std::string有一个clear()函数,所以除了第一个元素之外,你需要调用每个元素:

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;
}