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

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

Войти
Регистрация
Восстановить пароль
 
ppsukhov
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 6
#1

Разделить строку на строку и переменную - C++

08.05.2014, 02:25. Просмотров 434. Ответов 3
Метки нет (Все метки)

Задача: В первой строке ввода задаётся число n, далее n строк вида "Insert X", где X — натуральное число, или "Extract". Нужно, чтобы каждый раз, когда я ввожу строку "Insert X" программа поняла, что есть "Insert" и есть переменная x. С помощью strchr не получается. После 19 строки не знаю, что делать для обработки

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
31
32
33
34
35
36
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
#include <string>
#include <cstdlib>
#include <map>
 
int main()
{
   using namespace std;
   vector <int> v1;
   vector <int>::iterator Iter1;
   string s, ins("Insert"), ext("Extract");
   int i,x,n;
   cin >> n;
   for (i=0; i<=n; )
   {
      getline(cin,s);
      if (s.compare(ins)==0)
      {
         cin >> x;
         v1.push_back(x);
         make_heap ( v1.begin( ), v1.end( ) );
         i++;
      }
      if (s.compare(ext)==0)
      {
         make_heap ( v1.begin( ), v1.end( ) ); 
         cout << "Max: "<< v1.front()<<endl;
         pop_heap( v1.begin( ), v1.end( ) ); v1.pop_back();
         i++;
      }
      else continue;
   }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 02:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разделить строку на строку и переменную (C++):

Разделить строку - C++
считываю из файла строку E:\Путь к файлу\ Е:\путь к файлу надо ее разделить на две части в путях могут быть пробелы

Разделить строку на части - C++
Доброго времени суток. Имеется строка: char *pBuf=new char; заполняется она таким образом: int...

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

Разделить строку на символы - C++
Вводится какая то строка, нужно каждый символ разделить на отдельные элементы. Это можно сделать через char*, только не могу вспомнить как....

Разделить строку на массив - C++
Помогите разбить строку на слова и занести их в массив. Разбил. Теперь нужно вносить их в указатели на указатели? #define...

Разделить строку на слова - C++
I. Данный указатель на строку “Ala ma kota, a kot ma ale”. Напишите программу, которая будет выполнять такие функции: • разделит строку...

3
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 05:09 #2
Не нужно здесь getline() использовать:
C++
1
cin >> s;
0
ppsukhov
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 6
08.05.2014, 15:06  [ТС] #3
Нашел решение, если кому интересно.
C++
1
2
cin >> s;
cin >> skipws >> x;
skipws позволяет прочитать то, что идет в строке после пробела. В моем случае строку "insert x" программа разделила на строку "insert", которая нужна для условия if, и переменную x. Тему можно закрывать
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 17:17 #4
Цитата Сообщение от ppsukhov Посмотреть сообщение
cin >> s;
cin >> skipws >> x;
cin >> s здесь зачем тогда? Вот так (как и написал раньше) всё разделит:
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
31
32
33
34
35
36
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
#include <string>
#include <cstdlib>
#include <map>
 
int main()
{
   using namespace std;
   vector <int> v1;
   vector <int>::iterator Iter1;
   string s, ins("Insert"), ext("Extract");
   int i,x,n;
   cin >> n;
   for (i=0; i<=n; )
   {
      cin >> s;
      if (s.compare(ins)==0)
      {
         cin >> x;
         v1.push_back(x);
         make_heap ( v1.begin( ), v1.end( ) );
         i++;
      }
      if (s.compare(ext)==0)
      {
         make_heap ( v1.begin( ), v1.end( ) ); 
         cout << "Max: "<< v1.front()<<endl;
         pop_heap( v1.begin( ), v1.end( ) ); v1.pop_back();
         i++;
      }
      else continue;
   }
}
При вводе "insert x", insert прочитается в s, будет заход в первый if(), где в x прочитается x.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 17:17
Привет! Вот еще темы с ответами:

Разделить строку на слова - C++
Есть некая строка со словами: string stroka; И есть некоторая функция перегрузки: istream &amp; operator &gt;&gt;(istream * os) { ...

Как разделить строку на слова? - C++
Как разделить строку на слова? без использования функций

Как разделить строку на слова? - C++
Помогите написать функцию для разбиения передаваемой строки на слова. Например дана строка: &quot;This is text, and it is black.&quot;. И нужно...

Разделить строку на две части - C++
По индивидуальному заданию создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка C,...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
08.05.2014, 17:17
Ответ Создать тему
Опции темы

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