Как создать проверку на символ пробела?

Как создать проверку на 'пробел' ограничить использование одного 'пробела' между словами при выводе, удаляя все 'пробелы', кроме одного? Примерно понимаю, что нужно организовать функцию проверки на 'пробел' при чтении самого вектора в последнем цикле. Приведу в пример, что должно получится:

cin >> Hello            how       are you
cout << Hello how are you


#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    vector<string> words = {};
    string query;

    getline(cin, query);
    string word;

    for (char c : query) {
        if (c == ' ') {
            
            words.push_back(word);
            word.clear();
        }
        else {
            word += c;
        }
    }

    words.push_back(word);

    for (string length : words) {
        cout << "[" << length << "]" << " "s << endl;
    }
}
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 3
@LanskoyGames
У модераторов первое место, но только с конца...
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    string query;

    getline(cin, query);
    string word;
    bool dele = false;
    for (int i = 0; i != query.size(); ++i) {
        if (c[i] == ' ')
             if(dele == true) {
                   query.erase(i, 1);
              else {
                  dele = true;
              }
        else{dele = false;}
    }
        cout << query << endl;
}


Пишу с телефона, так что могут быть ошибки
Ответ написан
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Чтобы исправиль ваш код, просто добавьте проверку на пустое слово. Не надо его такое добавлять в список и все.
Ответ написан
Комментировать
@WAR_VIK
Можно с помощью регулярного выражения:
#include <iostream>
#include <regex>

int main()
{
    std::string str{"Hello            how       are you"};
    std::regex rx(R"(\s+)");
    std::string res = std::regex_replace(str, rx, " ");
    std::cout << res;
    return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час