#include <string>
using namespace std;
int main(){
string s;
getline(cin, s);
for (int i = 0; i<s.length();i++){
if (s[i] == ' ' && s[i+1] == ' ') {
s.erase(i,1);
i = i-1;
}
cout << s<< endl;
}
return 0;
}
- но компилятор cpp.sh говорит :In function 'int main()': 10:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] (я пока что не имею доступа к ноуту). Что не так?
Вот ссылка http://cpp.sh/85enp на страницу с моим кодом
Я смотрел на примеры с инета и "склеил" всё что было попроще) возможно и с условием перестарался
string::length() возвращает size_t, а у i тип int Вот он и ругается, что сравниваем знаковое и беззнаковое число
Погодите, мне кажется, я не понял суть программы))) Вы хотели лишний пробел удалять или вообще все пробел?
хочу удалить только лишние
прошу прощения, не так вас понял, ахахах
это там где erase? я наверное забыл о s[]
Не, вообще забудьте это сообщение, я не по теме написал совершенно 🙂
это не ошибка, это предупреждение только
Код Ваш работает правильно, вроде, так что все окей должно быть
i объяви unsigned, не будет предупреждения.
unsigned string s?
Что?
Переменную I i ииииии Ай латинская цифра один
проверяй на std::isspace https://en.cppreference.com/w/cpp/string/byte/isspace
int main() { std::string str = "Hello string with space"; for(auto i = 0; i < str.size(); i++) if(std::isspace(str.at(i))) { str.erase(i,1); i--; } std::cout << str; return 0; }
std::remove_if(std::begin(str), std::end(str), [](char c){ return std::isspace(c);});
Это кстати не работает
Уверен? Я вот на экран смотрю и у меня другая информация
Обсуждают сегодня