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

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

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;
    }
}
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 3
LanskoyGames
@LanskoyGames
Нейросети, C#, C++, Python, и смотри описание:-)
#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;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы