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

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

Восстановить пароль Регистрация
 
ppsukhov
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 6
08.05.2014, 02:25     Разделить строку на строку и переменную #1
Задача: В первой строке ввода задаётся число 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;
   }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 02:25     Разделить строку на строку и переменную
Посмотрите здесь:

Разделить строку на слова. C++
C++ Разделить строку
C++ Разделить строку на две подстроки.
Разделить строку на символы C++
Разделить строку на части C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 05:09     Разделить строку на строку и переменную #2
Не нужно здесь getline() использовать:
C++
1
cin >> s;
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. Тему можно закрывать
alsav22
5282 / 4801 / 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.
Yandex
Объявления
08.05.2014, 17:17     Разделить строку на строку и переменную
Ответ Создать тему
Опции темы

Текущее время: 21:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru