Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
#1

считывание без пробелов - C++

27.02.2013, 22:35. Просмотров 1017. Ответов 20
Метки нет (Все метки)

нужно, чтобы при вводе с клавиатуры текста удалялись пробелы, и на выходе был массив чаров( или string) без пробелов.
например:
вводим:123 456 789
а на выходе массив с элементами: 123456789
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
    {
       int n;
       char *spaces = new char[];
       cin>>spaces;
       n=strlen(spaces);
       char *pole = new char[];
       int z=0;
       for (int i=0; i<n; i++)
           {
             if (spaces[i]!=' ')
                 {
                   pole[z]=spaces[i];
                   z++;
                   cout<<spaces[i]<<endl;
                 }
           }
 
    }
этот код работает до первого пробела, подскажите: что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 22:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос считывание без пробелов (C++):

Игнорирование пробелов при считывание - C++
Здравствуйте, друзья. передо мной стоит задача проверить, является ли строка палиндромом. я предложил вот такую реализацию. ...

Вывод строки без пробелов - C++
в консоль вводится строка. она может заканчиваться/начинаться пробелами. нужно вывести ее же, но уже без пробелов. помогите написать,...

Запись строки из файла без пробелов - C++
Здравствуйте, нужна ваша помощь. Мне нужно считать строку из файла и убрать пробелы перед фразой, которую я записываю и потом вывожу.

Чтение строки без игнорирования пробелов - C++
столкнулся с такой проблемой: при считывании текста из файлы игнорируются пробелы, как это можно решить? void Open(vector&lt;char&gt; &amp;v) ...

Последовательность чисел без пробелов в файле. - C++
Есть входной файл, в котором содержатся числе не разделенные пробелами. Например: 19562356409583 Как можно числа по порядку присвоить...

Строки: посчитать количество символов без пробелов - C++
посчитать кол-во символом без пробелов.Что в этом коде не так,подскажите,пожалуйста. #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; ...

20
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.02.2013, 22:44 #2
Цитата Сообщение от lowlol Посмотреть сообщение
new char[];
Надо указывать размер выделяемого массива.

Добавлено через 2 минуты
И освобождать выделенную память.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
27.02.2013, 22:45 #3
Цитата Сообщение от lowlol Посмотреть сообщение
тобы при вводе с клавиатуры текста удалялись пробелы, и на выходе был массив чаров( или string) без пробелов.
ну так просто читаем всё в массив до упора перегруженным >>. Разделители пропускаются
0
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 22:49  [ТС] #4
Цитата Сообщение от Croessmah Посмотреть сообщение
ну так просто читаем всё в массив до упора перегруженным >>. Разделители пропускаются
можно поподробнее, пожалуйста
C++
1
space[i]>>pole[i];
или как?

Добавлено через 1 минуту
Цитата Сообщение от gray_fox Посмотреть сообщение
Надо указывать размер выделяемого массива.

Добавлено через 2 минуты
И освобождать выделенную память.
мы не знаем исходный размер текста
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.02.2013, 23:18 #5
Цитата Сообщение от lowlol Посмотреть сообщение
мы не знаем исходный размер текста
Ну и что? Нельзя выделить "не знаю сколько" памяти, так устроен оператор new[]. Можно взять std::string, там не будет таких проблем:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
 
int main() {
   std::string str;
   for (std::stirng tmp; std::cin >> tmp; ) {
      str.append(tmp);
   }
   std::cout << str << std::endl;
}
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
27.02.2013, 23:19 #6
Цитата Сообщение от lowlol Посмотреть сообщение
мы не знаем исходный размер текста
поэтому пытаемся выделить массив нулевого размера?
0
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:26  [ТС] #7
gray_fox, что делает 7я строка?

Добавлено через 37 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
поэтому пытаемся выделить массив нулевого размера?
ну компилится же, до первого пробела)
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.02.2013, 23:28 #8
Цитата Сообщение от lowlol Посмотреть сообщение
gray_fox, что делает 7я строка?
Добавляет tmp в конец str.
1
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:31  [ТС] #9
gray_fox, т.е. этот код вводит с клавиатуры в строку, а как пробелы мне убрать?
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.02.2013, 23:36 #10
lowlol, нет, он читает строки до пробела и добавляет их к str.

Добавлено через 39 секунд
Там грамм. ошибка, кстати, писал на память.

Добавлено через 1 минуту
Можно ведь просто взять, попробовать скомпилировать и посмотреть, что получиться самому: http://ideone.com/0ccipU .
0
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:40  [ТС] #11
gray_fox, допустим, если я введу с клавиатуры: 123 456
то он посчитает 123 как tmp, добавит к str, потом аналогично сделает с 456?

Добавлено через 57 секунд
gray_fox, я чекнул в VS, у меня отображалось только то, что я ввел
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.02.2013, 23:41 #12
lowlol, да, будет так делать, пока в потоке ввода что-нибудь есть.
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
27.02.2013, 23:42 #13
оператор >> игнорирует пробельные символы
0
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:45  [ТС] #14
gray_fox, а закрыть поток я могу как-нибудь так:
C++
1
2
3
4
5
6
for (string tmp;cin >> tmp; ) 
   {
      str.append(tmp);
      if (tmp == ' ') //здесь как мне enter записать?
             {break;}
   }
или есть способ легче?
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.02.2013, 23:52 #15
Цитата Сообщение от lowlol Посмотреть сообщение
gray_fox, я чекнул в VS, у меня отображалось только то, что я ввел
Потому что "конец ввода" - EOF. В винде вроде Ctrl+Z добавляет.

Добавлено через 1 минуту
Цитата Сообщение от lowlol Посмотреть сообщение
а закрыть поток я могу как-нибудь так:
Если ты хочешь читать до перевода строки, то проще будет читать посимвольно и проверять каждый символ перед добавлением на '\n', примерно так:
C++
1
2
3
for (char tmp; (std::cin >> tmp) && (tmp != '\n'); ) {
   str.append(tmp);
}
Добавлено через 5 минут
Только тут придётся ещё перед добавлением проверять на пробел самому.
1
27.02.2013, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 23:52
Привет! Вот еще темы с ответами:

Сравнение двух строк без учета пробелов - C++
Пишем в Microsoft Visual Studio 2010 -&gt; Win32 Console Application -&gt; C++ Задача такова: написать программу которая сравнивает две строки...

Как найти наибольшую длинну массива без пробелов - C++
Привет. Требуется написать программу, которая выводит наибольшую длинну массива без пробела. Пример. Входные данные: gHy Gggg deresa....

Нужно вывести количество (цифрой) символов без пробелов - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; char*...

Посчитать количество символов без пробелов в каждом предложении - C++
Здравствуйте! Получила задание посчитать количество предложений в строке и в каждом предложении посчитать количество символов, всё...


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

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

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