我有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]?
答案 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;
}