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

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

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

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

17.04.2014, 22:24. Просмотров 441. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли считать с консоли строку по шаблону? (C++):

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

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

Считать строку из консоли - C++
Как в с++ получить в виде строки то, что ответила система на команду. То есть если я, к примеру, выполняю system("dir") как можно получить...

Как считать строку с консоли? - C++
есть код, если раскоментить с 55-ой по 62-ую будет вылетать при первом же сеттере surname. как это вообще связано?! программа туда еще не...

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

Каким образом нормально считать с консоли строку? - C++
Дело в том что необходимо считывать строки вводимые с консоли. Но полноценно это не выходит. Ф-ция scanf() обеспечивает считывание только...

16
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,387
Завершенные тесты: 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 / 2
Регистрация: 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 / 2
Регистрация: 21.04.2013
Сообщений: 192
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
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 19:28 #5
Амперсанд убери, он для cout не нужен.
0
mhg
2 / 2 / 2
Регистрация: 21.04.2013
Сообщений: 192
18.04.2014, 19:45  [ТС] #6
а как мне изменить этот кусок кода, чтоб можно было ввести команды
сommand val
command2
, в этом варианте программа ждет после command2 число
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 19:48 #7
А что она должна ждать после команды? Отрегулируй форматную строку в scanf и вводи, что надо.
0
mhg
2 / 2 / 2
Регистрация: 21.04.2013
Сообщений: 192
18.04.2014, 19:49  [ТС] #8
можно конечно, записать строку с консоли целиком, а потом пройтись по ней sscanf()
а есть способ по быстрей?
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 19:50 #9
Изложи пошагово, что ты хочешь вводить.
0
mhg
2 / 2 / 2
Регистрация: 21.04.2013
Сообщений: 192
18.04.2014, 19:51  [ТС] #10
мне нужно, чтоб можно было вводить построчно команду+число или просто команду в цикле

типа

do 23
dont
dont
do 56
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 19:56 #11
Вводи команду отдельным scanf, потом проверяй какая команда введена и в зависимости от этого либо вводи число вторым scanf, либо переходи снова на ввод команды.
1
mhg
2 / 2 / 2
Регистрация: 21.04.2013
Сообщений: 192
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
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 20:42 #13
Синтаксически так. А по логике программы - тебе виднее. Получается, что если dont, то элемент массива оказывается не иинициализированным?
0
mhg
2 / 2 / 2
Регистрация: 21.04.2013
Сообщений: 192
18.04.2014, 20:58  [ТС] #14
да,но я к нему не обращаюсь
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 20:59 #15
Ну цель достигнута?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 20:59
Привет! Вот еще темы с ответами:

Как считать русские символы как строку в консоли - C++
На консоль текст русский выводиться,а вот при считывании он в казябриках. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Можно ли в массив чаров считать строку полностью? - C++
У меня получается считать только первое слово, понимаю что есть функция getline() и еще я какую-то похожую видел, но желательно без этих...

Считать текст из консоли - C++
Всем привет!Код примерно такой: int main() { setlocale(LC_ALL,&quot;Russian&quot;); int a; cout&lt;&lt;&quot;Ответьте на вопросы:да, нет&quot;&lt;&lt;endl; ...

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а - C++
Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в...


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

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

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