В качестве задания я должен написать функцию на 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;
}