Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
1

Разбор строки из консоли и вопрос по g++

05.03.2011, 16:09. Просмотров 1730. Ответов 11
Метки нет (Все метки)

Всем доброго времени суток :)

Недавно начал изучать C++ Вот есть пару вопросов...

Первое - Как мне разобрать строку из консоли (например: "1 2 3" или "1, 2, 3", а потом распределить все это добро по переменным). Желательно не быдлокодить :) Чем больше вариантов, тем лучше ;)

Второе - Скоро будут олимпиады по информатике. С компьютерами в некоторых школах проблемы (старые и зачуханные). К тому же в школах повсеместно устанавливается свободное ПО. Поэтому на них стоит линукс. Вопрос: достаточно ли "g++ main.cpp" в терминале для достойного результата? И еще - если можно, то дайте краткий гид по опциям компилятора g++ :)

P.S. - Поднял тему с линуксом так как сам на винде паганой сижу, пользуюсь Visual Studio 2010 C++ Express

Заранее всем спасибо!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2011, 16:09
Ответы с готовыми решениями:

Книга "Конечный автомат 2: Возвращение". Часть 1. Разбор. Глава 8. Имя, проверка строки и разбор до. На том ли я пути?
Наверное, иногда прилюдно выругаться полезно... Стоило мне в предыдущей теме написать...

Змейка на консоли - вопрос реализации с нуля
Недавно поняла, как считывать линию с консоли, уже задали написать змейку. можете помочь в...

Игра в консоли - вопрос скорости прорисовки сцены
Мне надо создать небольшую игру в консоли на VB.NET (2010). Когда я пытаюсь сначала очищать...

Разбор строки
Допустим есть исходная строка "15,0 минут" необходимо убрать слово "минут" и в зависимости от...

Разбор строки
Помогите разобрать вот такие строки: 2011/07/01 22:08:29 1...

11
asics
Freelance
Эксперт С++
2865 / 1800 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
05.03.2011, 16:24 2
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
Как мне разобрать строку из консоли (например: "1 2 3"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <sstream>
#include <string>
 
int main(){
  std::string str("1 2 3");
  int a, b, c;
  std::istringstream ist(str);
  ist >> str;
  a = str[0] - '0';
  ist >> str;
  b = str[0] - '0';
  ist >> str;
  c = str[0] - '0';
  std::cout << a << ' ' << b << ' ' << c;
  return 0;
}
1
romex
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
05.03.2011, 16:28 3
И еще - если можно, то дайте краткий гид по опциям компилятора g++
На линуксе в консоли
man g++

А пока вам полезно будет знать опцию -o, сразу за ней имя файла, в который сохранится "'exe-шник"
0
asics
Freelance
Эксперт С++
2865 / 1800 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
05.03.2011, 16:32 4
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
И еще - если можно, то дайте краткий гид по опциям компилятора g++
http://c2p.ru/c/griffits-a-gcc-polnoe-rukovodstvo.html
0
05.03.2011, 16:32
Evg
Эксперт CАвтор FAQ
20976 / 8067 / 624
Регистрация: 30.03.2009
Сообщений: 22,385
Записей в блоге: 30
05.03.2011, 17:32 5
http://www.cyberforum.ru/cpp/thread152233.html

GCC - компиляция C/C++ программ
0
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
05.03.2011, 23:00  [ТС] 6
Про g++ все понял, спасибо

Так теперь поговорим про разбор строки. А если у меня на входе строка вида "1, 2, 3"?
0
asics
Freelance
Эксперт С++
2865 / 1800 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
05.03.2011, 23:03 7
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
Так теперь поговорим про разбор строки. А если у меня на входе строка вида "1, 2, 3"?
См. пост #2
0
Evg
Эксперт CАвтор FAQ
20976 / 8067 / 624
Регистрация: 30.03.2009
Сообщений: 22,385
Записей в блоге: 30
05.03.2011, 23:27 8
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
А если у меня на входе строка вида "1, 2, 3"?
Аргументы разделяются пробелами. Если запустишь

Код
./a.out 1, 2, 3
то прийдёт 3 аргумента: "1," "2," "3"

а если

Код
./a.out "1, 2, 3"
то один аргумент "1, 2, 3". Дальше уже сам думай, тем более тебе тут готовое решение предлодили
0
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 08:55  [ТС] 9
Наверное сам виноват - не объяснил. Хотя способ, который мне предложили мне точно когда-нибудь пригодится

Я хочу взять строку из консоли (cin) и распределить ее по переменным. Покажите 2 примера ("1 2 3" и "1, 2, 3"). Буду вам очень признателен.
0
igorrr37
2042 / 1606 / 800
Регистрация: 21.12.2010
Сообщений: 2,751
Записей в блоге: 10
06.03.2011, 09:31 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<sstream>
#include<cctype>
 
int main(){
    std::string s;
    int a, b, c;
    getline(std::cin, s);
    for(int i=0; i<s.size(); i++){
        if(!isdigit(s[i])) s[i]=' ';
    }
    std::stringstream ss(s);
    ss>>a>>b>>c;
    std::cout<<"a="<<a<<", b="<<b<<", c="<<c<<"\n";
}
// 34,5,67
1
Evg
Эксперт CАвтор FAQ
20976 / 8067 / 624
Регистрация: 30.03.2009
Сообщений: 22,385
Записей в блоге: 30
06.03.2011, 11:53 11
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
Я хочу взять строку из консоли (cin) и распределить ее по переменным. Покажите 2 примера ("1 2 3" и "1, 2, 3"). Буду вам очень признателен.
В первом посте ты писал "Скоро будут олимпиады по информатике". Мой тебе совет - не ходи туда, не позорься
0
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 12:34  [ТС] 12
Ну вообще-то и я тоже могу оскорбить... если захочу. Можешь не переживать, я занял 2 место на олимпиаде (Москва и Московская область) в прошлом году. Программировал на Паскале и VB.NET. А вопрос свой я задал в "C/C++ для начинающих" не просто так... C++ я начал изучать всего 4 дня назад. Если хочется повы...еживаться, то найди другую ветку, Evg...

Добавлено через 1 минуту
asics и igorrr37, спасибо за листинги! Очень пригодились. Больше вопросов не имею.
0
06.03.2011, 12:34
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2011, 12:34

Разбор строки
Добрый день! Может подскажите как с помощью рег выражения, красиво разобрать строку вида Sun, 28...

Разбор строки
Например есть строка: &quot;111122333&quot;. Пояснение: строки всегда из цифр, минимум 5 и максимум 9...

Разбор строки
Предположим у нас есть строка &quot;5*x^2+3*x+15&quot;. По этой функции заданной строкой требуется построить...


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

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

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