Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
5 / 3 / 2
Регистрация: 12.09.2019
Сообщений: 270

Как убрать в введенной строке лишние пробелы?

01.04.2020, 00:27. Показов 3292. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например в питоне я сделал так. Разделил сплитом по пробелу и составил список полученных слов и потом собрал полученный список с помощью join. Типо нужно чтобы программа убирала лишние пробелы в строке.
Python
1
2
3
4
5
def clean(line):
    return ' '.join(line.split())
 
text = 'Вот такая    вот задача.           Напишите            функцию!'
print(clean(text))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2020, 00:27
Ответы с готовыми решениями:

Убрать лишние пробелы в строке
дана строка-предложение с избыточными пробелами между словами. Преобразовать ее так чтобы между словами оставался один пробел

Удалить из введенной строки лишние пробелы
Напишите программу, удаляющую из введенной строки лишние пробелы.

Удалить в строке все лишние пробелы, то есть серии подряд идущих пробелов заменить на одиночные пробелы
Я уже решал эту задачу с помощью циклов и символьных массивов, и выкладывал на этот форум , но я не знаю как решить её , с помощью типа...

2
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
01.04.2020, 01:54
Цитата Сообщение от artem24115 Посмотреть сообщение
Например в питоне я сделал так
В C++ есть 1000 и 1 способ выполнить эту задачу, но подход немного иной, поскольку здесь нет такого разнообразия готовых функций, как в Python. Наиболее очевидные (для меня) варианты:
- выполнить поиск пробелов по строке и их удаление;
- разбор строки на слова (своя функция, регулярное выражение, stringstream, ...) с последующим объединением;
- конечный автомат.

Если не заниматься разбором строк вручную, вариант со stringstream выглядит неплохо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <sstream>
#include <string>
 
std::string clean(const std::string &str) {
    std::istringstream ss(str);
 
    std::string word;
    std::string clean_str;
 
    // Пока остались необработанные слова, извлекаем их из потока.
    while (ss >> word) {
        // Дописываем слова в конец новой строки.
        clean_str.append(word);
        // Разделяем слова пробелами.
        clean_str.append(" ");
    }
 
    // Последний пробел был лишним, поэтому удаляем его.
    clean_str.pop_back();
 
    return clean_str;
}
 
int main() {
    using namespace std;
 
    cout << "`" << clean("  Вот такая    вот задача.           Напишите            функцию!  ")  << "`" << endl;
 
    return 0;
}
Или поиск парных пробелов и замена на один:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <string>
 
std::string clean(std::string str) {
    // Заменить множественные пробелы одним пробелом.
    std::string::size_type pos;
    while ((pos = str.find("  ")) != std::string::npos) {
        str.replace(pos, 2, " ");
    }
 
    // Удалить пробел в начале строки.
    if ((str.length() > 0) && (str.front() == ' ')) {
        str.erase(0, 1);
    }
 
    // Удалить пробел в конце строки.
    if ((str.length() > 0) && (str.back() == ' ')) {
        str.pop_back();
    }
 
    return str;
}
 
int main() {
    using namespace std;
 
    cout << "`" << clean("  Вот такая    вот задача.           Напишите            функцию!  ")  << "`" << endl;
 
    return 0;
}
0
5 / 3 / 2
Регистрация: 12.09.2019
Сообщений: 270
01.04.2020, 02:18  [ТС]
Да спасибо, я уже сам смог понять , что нужно сделать.

Добавлено через 1 минуту
Если кому-то вдруг пригодится, вот решение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    string text;
    string word;
    stringstream ss;
    cout<<"Введите строку\n";
    getline(cin,text);
    ss.str(text);
    while(ss>>word)
        cout<<word<<" ";
    cout<<endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2020, 02:18
Помогаю со студенческими работами здесь

Дополните предыдущую программу таким образом,чтобы во введенной строке сначала удалялись лишние пробелы
Лишними считать пробелы, если они повторяются 2 или более раз подряд. Вот код предыдущей программы. program P8_1; uses crt; var...

Убрать в строке все лишние пробелы и поменять четные и нечетные слова местами
Помогите, пожалуйста, написать код: С клавиатуры вводится строка. Количество слов четно. Нужно поменять местами слова: первое и второе,...

Удалить из строки введенной пользователем лишние (не одинарные) пробелы. Реализовать как функцию.
Привет Всем! Я не могу справиться с заданиями.Люди добрый помогите пожалуста. 1.Удалить из строки введенной пользователем лишние (не...

Как убрать из базы &nbsp; и лишние пробелы
Всем привет. Столкнулся с проблемой &quot;лишних&quot; данных в таблице БД. Привязываю SQLdataSource к своему GridView, вытягиваю в текстБокс...

Как обрезать текст и убрать из него лишние пробелы и тэги?
Доброго времени. Нашел такое (частичное решение) решение: &lt;?php $a = $item; $b = mb_substr($a, 0, 100); if ($a != $b)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru