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

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

Войти
Регистрация
Восстановить пароль
 
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
#1

Как игнорировать ненужные данные из потока? - C++

15.07.2012, 19:02. Просмотров 836. Ответов 11
Метки нет (Все метки)

Формат входной строки должен быть таким:
Слово нужное_нам_число
Например:
windows 2012
Нужно из strStream потока присвоить переменной k число, стоящее после слова. В данном случае число 2012. При этом нельзя использовать дополнительные переменные. Как это эффективно и наглядно реализовать? Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main()
{
   string curLine;
   stringstream strStream( curLine );
   int k = 0;
 
   // здесь надо ввести какое-нибудь слово до 30 символов + пробел + число
   getline( cin, curLine );
//   strStream.ignore( 32, ' ' ); // эта строка не работает как надо :(
   strStream >> k;
 
   cout << "Вы ввели число k = " << k << endl;
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2012, 19:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как игнорировать ненужные данные из потока? (C++):

Как красиво игнорировать символы из входного потока? - C++
Здравствуйте! Необходимо игнорировать некие символы до конца строки. Есть два варианта: std::cin.ignore() - однако! Требуется...

Как сделать что б из потока выводились данные на листбокс - C++
Есть код: #pragma optimize (&quot;&quot;, off) ULONG WINAPI ServiceThread(PVOID lpParam) { while(1) { Sleep(20); ...

Как прочитать данные из потока вывода другого процесса - C++
Как получить то, что выводит командная строка (прочитать выводной поток другого процесса)

Как в CodeBlocks отключить ненужные варнинги? - C++
У функции нет прототипа. CodeBlocks показывает предупреждение. warning: no previous prototype for function 'CreateArray' | Как...

Как удалить из строки ненужные символы? - C++
Как удалить из строки ненужные символы? Заранее спасибо.

не могу считать из потока данные - C++
Ребят,помогите разобраться. Вот код. #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;Ole2.h&gt; #include &lt;Objbase.h&gt; ...

11
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.07.2012, 19:29 #2
C++
1
strStream >> curLine >> k;
без доп. переменных
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,148
15.07.2012, 19:35 #3
Ну если нам нужно выпилить именно из строки из двух слов первое, можно сделать, например, так:
C++
1
curLine.erase(0, curLine.find(' ') + 1);
1
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
15.07.2012, 19:37  [ТС] #4
Jupiter, а это не бесконечная рекурсия будет? Страшная и очень опасная конструкция
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,148
15.07.2012, 19:40 #5
Цитата Сообщение от Buckstabue Посмотреть сообщение
Jupiter, а это не бесконечная рекурсия будет?
Где там вообще рекурсия?Оо
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
15.07.2012, 19:48  [ТС] #6
NoMasters, и вправду нет тут никакой рекурсии и в помине. Решил твоим способом решить, хотя выглядит он не очень казисто, но лучше чем ничего. Код таков
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 <sstream>
#include <string>
 
using namespace std;
 
int main()
{
   string curLine;
   stringstream strStream;
   int k = 0;
 
   // здесь надо ввести какое-нибудь слово до 30 символов + пробел + число
   getline( cin, curLine );
   curLine.erase( 0, curLine.find(' ') + 1 );
   strStream.str( curLine );
   strStream >> k;
 
   cout << "Вы ввели число k = " << k << endl;
   return 0;
}
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,148
15.07.2012, 19:53 #7
stringstream здесь не нужен. Вообще не нужен
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
15.07.2012, 20:00  [ТС] #8
Я просто завтра ЕГЭ по информатике сдаю, а там особенно популярен построчный ввод. Кстати, вот загадка: такой код почему-то работает, а тот что в первом посте нет, хотя отличий почти нет по идее...
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 <sstream>
#include <string>
 
using namespace std;
 
int main()
{
   string curLine;
   stringstream strStream;
   int k = 0;
 
   // здесь надо ввести какое-нибудь слово до 30 символов + пробел + число
   getline( cin, curLine );
//   curLine.erase( 0, curLine.find(' ') + 1 );
   strStream.str( curLine );
   strStream.ignore(32, ' ');
   strStream >> k;
 
   cout << "Вы ввели число k = " << k << endl;
   return 0;
}
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
15.07.2012, 20:04 #9
Цитата Сообщение от Buckstabue Посмотреть сообщение
windows 2012
C++
1
2
3
4
5
int value;
if (1 != scanf ("%*s %d", &value)) {
  std::cerr << "error" << std::endl;
  return -1;
}
1
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.07.2012, 20:13 #10
Цитата Сообщение от Buckstabue Посмотреть сообщение
Кстати, вот загадка: такой код почему-то работает, а тот что в первом посте нет, хотя отличий почти нет по идее...
потому что стрим копирует строку, а в 1-м посте строка пустая
1
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.07.2012, 20:43 #11
Buckstabue, в одном месте можно проще и наглядней. Вместо:
C++
1
strStream.str( curLine );
написать:
C++
1
strStream << curLine;
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
15.07.2012, 21:44  [ТС] #12
Jupiter, а я думал он ассоциирует строку с потоком, как в Qt есть TextStream или что-то в этом духе и там гораздо проще работать с потоками, но боюсь Qt на егэ не прокатит, да и без документации тяжело писать
0
15.07.2012, 21:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2012, 21:44
Привет! Вот еще темы с ответами:

Не могу правильно считать данные из потока - C++
Привет всем. У меня есть такая задача. На вход поступает дробь вида 1 1/4 (например). Эта дробь может быть представлена как только целой...

Base64 Как Игнорировать не закодированные данные - PHP
Есть функция раскодировки ссылок: $s = base64_decode($s); Работает отлично когда ссылка в base64 , а когда без, выводятся...

Как получить данные из потока - C# WPF
Здравствуйте, написал функционал для проверки файлов, но т.к. файлов много 5000+и при выполнении данной операции программа виснет то я все...

Как получить данные из потока? - C#
Сделал класс в котором опрашиваются все локальные БД. Хочу чтобы данные передавались в UI формы где вызывается поток. Как это сделать? ...


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

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

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