Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/47: Рейтинг темы: голосов - 47, средняя оценка - 4.85
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 255
1

Удалить в строке все лишние пробелы, то есть серии подряд идущих пробелов заменить на одиночные пробелы

27.12.2018, 23:52. Показов 8678. Ответов 5
Метки нет (Все метки)

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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2018, 23:52
Ответы с готовыми решениями:

В заданной строке удалить все лишние пробелы, заменяя несколько подряд идущих пробелов одним
Добрый день. Столкнулся с проблемой в программе. Пробелы удаляет, но если ввести пробелы перед...

Удалить из текста лишние пробелы (из нескольких подряд идущих пробелов оставить только один)
Вывести на экран заданный текст, удалив из него лишние пробелы, т.е. из нескольких подряд идущих...

Как удалить все пробелы в строке, и если есть кавычки, то между ними пробелы заменить на %
Как удалить все пробелы в строке, и если есть кавычки, то между ними пробелы заменить на %? Вот...

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

5
118 / 93 / 35
Регистрация: 18.12.2012
Сообщений: 654
28.12.2018, 00:05 2
Цикл по-любому будет.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31075 / 20302 / 7906
Регистрация: 22.10.2011
Сообщений: 35,204
Записей в блоге: 6
28.12.2018, 00:21 3
Цитата Сообщение от alkl Посмотреть сообщение
Цикл по-любому будет.
Не нужен тут никакой цикл. Прекрасно все без него делается:

C++
1
2
3
4
5
    std::string s = "one       two,    three";
    std::string::iterator it = 
        std::unique(s.begin(), s.end(), 
                    [] (char lt, char rg) {return lt == ' ' && rg == ' ';});
    s.erase(it, s.end());
1
118 / 93 / 35
Регистрация: 18.12.2012
Сообщений: 654
28.12.2018, 00:27 4
Лучший ответ Сообщение было отмечено Ivan _pupkin как решение

Решение

Цитата Сообщение от volvo Посмотреть сообщение
Прекрасно все без него делается
Если Вы его не написали в коде - это не означает, что его нет

Как вариант, по-простому в лоб :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    string str_in = "Ля-ля-ля  жу-жу-жу    , ку-ку  ...";
    string str_out="";
    bool b=false;
    for (int i = 0; i < str_in.length(); i++) {
        if (str_in[i] == ' ') {
            if (b)  continue;
            b = true;
        }
        else
            b = false;
        str_out += str_in[i];
    }
 
    cout << str_out;
1
6240 / 4232 / 2444
Регистрация: 18.12.2017
Сообщений: 13,210
28.12.2018, 01:03 5
Лучший ответ Сообщение было отмечено Ivan _pupkin как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string> 
using namespace std;
 
int main()
{
    int i=0;
    string s;
    cout << "String:\n";
    getline(cin, s);
    
    while (s[i])
    {
    if (s[i]==' ' && s[i+1]==' ') {s.erase(i,1); i--;}
    i++;
    }
    cout << s<< endl;
    
system("pause");
return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string> 
using namespace std;
 
int main()
{
    string s;
    cout << "String:\n";
    getline(cin, s);
    
    size_t pos;
    while ((pos = s.find("  ")) != string::npos)
       s = s.replace(pos, 2, " ");
        
    cout <<s<<"\n";
system("pause");
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
#include <iostream>
#include <string> 
#include <sstream> 
using namespace std;
 
int main()
{
    string s, word, s1;
    cout << "String:\n";
    getline(cin, s);
    
    stringstream words(s);
    while (words >> word)
    {
        s1+=word+" ";        
    }
    
    s1.erase (s1.size()-1, 1);    
    cout <<s1<<"\n";
system("pause");
return 0;
}
1
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 255
28.12.2018, 08:22  [ТС] 6
alkl, просто ваш код самый понятный для меня, ибо я ещё не знаю все методы класса string и , что они делают. А так у других тоже правильные решения
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2018, 08:22

Помощь в написании контрольных, курсовых и дипломных работ здесь.

В символьной строке удалить все лишние подряд идущие пробелы.
помогите пожалуйста написать программу:В символьной строке удалить все лишние подряд идущие пробелы.

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

Напечатать заданный текст, удалив из него лишние пробелы, т.е. из нескольких подряд идущих пробелов оставить только один
Дан текстовый файл, содержащий строки. Напечатать заданный текст, удалив из него лишние пробелы,...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.