Форум программистов, компьютерный форум CyberForum.ru

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

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

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

27.02.2013, 22:35. Просмотров 915. Ответов 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;
                 }
           }
 
    }
этот код работает до первого пробела, подскажите: что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 22:35     считывание без пробелов
Посмотрите здесь:

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
27.02.2013, 22:44     считывание без пробелов #2
Цитата Сообщение от lowlol Посмотреть сообщение
new char[];
Надо указывать размер выделяемого массива.

Добавлено через 2 минуты
И освобождать выделенную память.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
27.02.2013, 22:45     считывание без пробелов #3
Цитата Сообщение от lowlol Посмотреть сообщение
тобы при вводе с клавиатуры текста удалялись пробелы, и на выходе был массив чаров( или string) без пробелов.
ну так просто читаем всё в массив до упора перегруженным >>. Разделители пропускаются
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 минуты
И освобождать выделенную память.
мы не знаем исходный размер текста
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 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;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
27.02.2013, 23:19     считывание без пробелов #6
Цитата Сообщение от lowlol Посмотреть сообщение
мы не знаем исходный размер текста
поэтому пытаемся выделить массив нулевого размера?
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:26  [ТС]     считывание без пробелов #7
gray_fox, что делает 7я строка?

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

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

Добавлено через 1 минуту
Можно ведь просто взять, попробовать скомпилировать и посмотреть, что получиться самому: http://ideone.com/0ccipU .
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, у меня отображалось только то, что я ввел
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
27.02.2013, 23:41     считывание без пробелов #12
lowlol, да, будет так делать, пока в потоке ввода что-нибудь есть.
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
27.02.2013, 23:42     считывание без пробелов #13
оператор >> игнорирует пробельные символы
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;}
   }
или есть способ легче?
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 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 минут
Только тут придётся ещё перед добавлением проверять на пробел самому.
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:53  [ТС]     считывание без пробелов #16
gray_fox,
1 IntelliSense: отсутствуют экземпляры перегруженная функция "std::basic_string<_Elem, _Traits, _Alloc>::append [с _Elem=char, _Traits=std::char_traits<char>, _Alloc=std::allocator<char>]", соответствующие списку аргументов
типы аргументов: (char)
тип объекта: std::string

вот так ругается в последнем коде
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
27.02.2013, 23:55     считывание без пробелов #17
т.е если предыдущее поправить.
C++
1
2
3
4
5
for (char tmp; (std::cin >> tmp) && (tmp != '\n'); ) {
   if (tmp != ' ') {
      str.append(1, tmp);
   }
}
Добавлено через 1 минуту
Цитата Сообщение от lowlol Посмотреть сообщение
отсутствуют экземпляры перегруженная функция
а, ну да, для добавления символа:
C++
1
str.append(1, tmp);
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 23:59  [ТС]     считывание без пробелов #18
gray_fox, я правильно понял, что 1 в параметрах append так как считываем по одному символу?
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
28.02.2013, 00:01     считывание без пробелов #19
Цитата Сообщение от lowlol Посмотреть сообщение
что 1 в параметрах append так как считываем по одному символу?
Добавляешь одну копию tmp в конец str. http://en.cppreference.com/w/cpp/str..._string/append , если особо интересно, я наизусть это всё не знаю)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 00:03     считывание без пробелов
Еще ссылки по теме:

Нужно вывести количество (цифрой) символов без пробелов - 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++
Привет. Требуется написать программу, которая выводит наибольшую длинну массива без пробела. Пример. Входные данные: gHy Gggg deresa....

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

Удаление пробелов в строке без использования модуля <string.h> - C++
Задача такая Ниже приведен текст. Дана строка.преобразовать ее следующим образом:удалить группы пробелов если имеються которыми эта...

Функция, определяющая количество символов в строке без учета пробелов - 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; using...


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

Или воспользуйтесь поиском по форуму:
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
28.02.2013, 00:03  [ТС]     считывание без пробелов #20
gray_fox, вроде все понял, спасибо за разъяснения
Yandex
Объявления
28.02.2013, 00:03     считывание без пробелов
Ответ Создать тему
Опции темы

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