С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 32
1

Программа, удаляющая лишние пробелы

09.03.2015, 12:33. Показов 1480. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На просторах форума столкнулся с программой по удалению лишних пробелов, объясните пожалуйста работу некоторых строк
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
 
using namespace std ;
 
typedef istream_iterator<string> input_str;  
typedef ostream_iterator<string> output_str;
 
int main()
{
    string str;
    getline(cin, str); // записываем строку в поток 
 
    istringstream ist(str);   //  ?
    copy(input_str(ist), input_str(), output_str(cout, " ") );  // input_str() читает до первого пробела?
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2015, 12:33
Ответы с готовыми решениями:

Программа удаляет лишние пробелы
#include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; const short SIZE =...

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

Функция, удаляющая запятые и пробелы в строке
#include&lt;iostream&gt; using namespace std; char strdespace(char s){ } int main () { //сама...

Функция удаляющая из строки подряд идущие пробелы
Опишите функцию, удаляющую из строки ,переданной ей в качестве параметра , все подряд идущие...

6
Модератор
Эксперт С++
13706 / 10909 / 6473
Регистрация: 18.12.2011
Сообщений: 29,126
09.03.2015, 13:19 2
istringstream ist(str);
ist - экземпляр класса istream, в котором ввод из файла заменен на ввод из строки str.
Т.е. оператор ist>>str2; Будет брать из строки str очередное слово в строку str2.
copy(input_str(ist), input_str(), output_str(cout, " ") );
будет поочередно копировать слова из ist в поток вывода на экран до тех пор, пока строка не закончится.
0
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
09.03.2015, 13:20 3
По моему так:

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>
#include <sstream>
#include <algorithm>
#include <iterator>
 
using namespace std ;
 
typedef istream_iterator<string> input_str;  
typedef ostream_iterator<string> output_str;
 
int main()
{
    string str;
    getline(cin, str); // Читаем из потока cin в строку str. Просто ввод строки с консоли 
 
    //  создаём поток из считаной строки (использовать сразу cin, вместо ist, не стали так как, судя по всему,
    //  требуется сначала считать строку целиком, а потом её разбирать
    istringstream ist(str);    
 
 
    // Копируем из потока ist в поток cout.
    // Второй параметр output_str - это строка-разделитель. 
    // Судя по всему рассчёт идёт на то, что несколько символов-разделителей идущих подряд 
    // будут заменться одним разделителем
    copy(input_str(ist), input_str(), output_str(cout, " ") ); 
 
 
    return 0;
}
0
Модератор
Эксперт С++
13706 / 10909 / 6473
Регистрация: 18.12.2011
Сообщений: 29,126
09.03.2015, 13:41 4
Цитата Сообщение от НеСказочник Посмотреть сообщение
будут заменяться одним разделителем
Все разделители пропали на этапе ввода слов из строки str.
А здесь пробел добавляется, чтобы слова не слиплись.
0
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
09.03.2015, 13:43 5
Цитата Сообщение от zss Посмотреть сообщение
Все разделители пропали на этапе ввода слов из строки str.
А здесь пробел добавляется, чтобы слова не слиплись.
Пардон. Ошибся.
0
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 32
09.03.2015, 13:59  [ТС] 6
Спасибо, ребят, помогли
0
Неэпический
18108 / 10695 / 2062
Регистрация: 27.09.2012
Сообщений: 26,928
Записей в блоге: 1
09.03.2015, 14:18 7
Стоит учесть, что данная программа ничего не удаляет из строки, а лишь выводит строку без разделителей, причем не важно каких именно разделителей, всё равно вместо любого из разделителей (или их последовательности) при выводе будет подставлен пробел.
0
09.03.2015, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2015, 14:18
Помогаю со студенческими работами здесь

Функция удаляющая пробелы в начале и в конце строки
Разработайте функцию std::string TrimBlanks(std::string const&amp; str), выполняющую отрезание...

Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот)
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include...

Лишние пробелы
Здравствуйте. Выполняю задание на microsoft visual studio. Необходимо удалить лишние пробелы в...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru