【发布时间】:2020-01-13 22:00:58
【问题描述】:
作为一个作业,我必须用 C++ 编写一个函数来删除句子中的一个单词。我们将句子本身作为字符串 std::string sentence 和要删除的单词的编号 int place。
单词之间可以有多个空格,句子可以以空格结尾和开头。
例如:DeleteWord("Fox jumped over lazy dog", 2)
应该返回:"Fox over lazy dog"。
问题是我只能使用 std::string size() 和 resize()。
我也应该只删除单词,而不是它周围的空格。
我已经写了一些代码,但输出不正确:我将所有单词放在一个数组中,然后在参数中删除一个,但是空格是一个大问题,因为它们也被放入数组中,因此我无法正确删除和打印它们。
您对如何解决这个问题有任何想法吗?谢谢!
到目前为止我的代码:
std::string DeleteWord(std::string sentence, int place){
std::string retvalue;
long long wordcounter = 0;
long long spacecounter = 0;
long long spacescounter = 0;
int i = 0;
int index = 0;
for(int i=0; i<sentence.size(); i++){
if((sentence[i]==' ') && (sentence[i+1]!=' ')) spacecounter++;
}
for(int i=0; i<sentence.size(); i++){
if(sentence[i]==' ') spacescounter++;
}
std::string words[spacescounter+1];
while(i<sentence.size()){
if(sentence[i]!=' '){
words[index] += sentence[i];
i++;
}
else{
index++;
i++;
}
}
sentence[place-1] = ' ';
for(int i=0; i<=index; i++){
retvalue+=words[i] + ' ';
}
return retvalue;
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。