Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
1

Можно ли считать с консоли строку по шаблону?

17.04.2014, 22:24. Просмотров 507. Ответов 16
Метки нет (Все метки)

например, scanf можно считать число и записать в переменную.
C++
1
2
int n;
scanf("%d", &n);
а если строка формата "command val", где val - любое число.
Нужно записать и команду и число.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2014, 22:24
Ответы с готовыми решениями:

Считать строку из консоли
Добрый день. Как правильно написать для считывания строки из консоли? ...

Считать строку из консоли
Здравствуйте. Скажите, пожалуйста, как можно считать текст из консоли,...

Считать строку из консоли
Как в с++ получить в виде строки то, что ответила система на команду. То есть...

Считать строку с консоли
такая задачка, препод хочет чтобы мы не юзали класс string, а юзали массивы...

Считать посимвольно строку из консоли
Добрый день! Необходимо в программе организовать считывание длинной строки из...

16
zss
Модератор
Эксперт С++
7178 / 6677 / 4226
Регистрация: 18.12.2011
Сообщений: 17,621
Завершенные тесты: 1
17.04.2014, 22:45 2
C++
1
2
3
int n;
char command[64];
scanf("%s%d",command, &n);
1
Komi
6 / 6 / 5
Регистрация: 10.08.2012
Сообщений: 82
18.04.2014, 03:42 3
или
C++
1
2
3
int val;
string command;
cin >> command >> val;
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 19:26  [ТС] 4
норм
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char command[100000][8];
unsigned long int val[100000];
 
int main()
{
    int n,i;
 
    scanf ("%d",&n); 
    
    for (i=0; i<n;i++)
    {   
        scanf("%s %d",command[i], &val[i]);
    }
 
        for (i=0; i<n;i++)
    {   
        std::cout<<command[i]<<"  "<<val[i]<<std::endl;
    }
return 0;}
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 19:28 5
Амперсанд убери, он для cout не нужен.
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 19:45  [ТС] 6
а как мне изменить этот кусок кода, чтоб можно было ввести команды
сommand val
command2
, в этом варианте программа ждет после command2 число
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 19:48 7
А что она должна ждать после команды? Отрегулируй форматную строку в scanf и вводи, что надо.
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 19:49  [ТС] 8
можно конечно, записать строку с консоли целиком, а потом пройтись по ней sscanf()
а есть способ по быстрей?
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 19:50 9
Изложи пошагово, что ты хочешь вводить.
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 19:51  [ТС] 10
мне нужно, чтоб можно было вводить построчно команду+число или просто команду в цикле

типа

do 23
dont
dont
do 56
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 19:56 11
Вводи команду отдельным scanf, потом проверяй какая команда введена и в зависимости от этого либо вводи число вторым scanf, либо переходи снова на ввод команды.
1
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 20:11  [ТС] 12
Так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
     char command[100000][8];
      int val[100000];
 
int main()
{
 
    int n;
 
    char do [3] ="Do";
    char dont [5] ="Dont";
 
    scanf ("%d",&n); 
    
    for (int i=0; i<n;i++)
    {   
        scanf("%s",command[i]);
 
        if (strcmp(command[i],do) == 0)
        {
            scanf("%d", &val[i]);
        }       
    }
return 0;}
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 20:42 13
Синтаксически так. А по логике программы - тебе виднее. Получается, что если dont, то элемент массива оказывается не иинициализированным?
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 20:58  [ТС] 14
да,но я к нему не обращаюсь
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 20:59 15
Ну цель достигнута?
0
mhg
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 201
18.04.2014, 21:02  [ТС] 16
да, теперь все збс
спасибо!
0
Komi
6 / 6 / 5
Регистрация: 10.08.2012
Сообщений: 82
19.04.2014, 06:09 17
Цитата Сообщение от mhg Посмотреть сообщение
мне нужно, чтоб можно было вводить построчно команду+число или просто команду в цикле
если я тебя правильно понял, создай условия стрингу
C++
1
2
3
4
5
6
7
8
9
10
cin >> command;
bool flag;
do{
    flag=0;
    if(strcmp(command, "do")==0)
            {/*делать шнягу*/}
    else if(strcmp(command, "dont")==0)
            {/*делать другую шнягу, или не делать, пох*/}
    else flag = 1
   }while(flag=1);
1
19.04.2014, 06:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 06:09

Как считать строку с консоли?
есть код, если раскоментить с 55-ой по 62-ую будет вылетать при первом же...

Каким образом нормально считать с консоли строку?
Дело в том что необходимо считывать строки вводимые с консоли. Но полноценно...

Как считать русские символы как строку в консоли
На консоль текст русский выводиться,а вот при считывании он в казябриках. ...


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

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

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