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

Парсинг значений из командной строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структура данных http://www.cyberforum.ru/cpp-beginners/thread382388.html
Я сейчас изучаю Си. (по книжкам(Керниган,Ритчи ) и видеокурс от "Специалист"). У меня такой вопрос стоит ли параллельна учить Структуры данных ? Или после изучение синтаксиса языка учить?
C++ Massiv #include <iostream.h> #include <math.h> void main () { int i, n, k=0;int a; cin>>n; for (i=0;i<n;i++) http://www.cyberforum.ru/cpp-beginners/thread382386.html
Дано целое число K и набор ненулевых целых чисел C++
Дано целое число K и набор ненулевых целых чисел; признак его за-вершения — число 0. Вывести номер последнего числа в наборе, больше-го K. Если таких чисел нет, то вывести 0.
Массивы С++ C++
В массивах a и b хранятся коэффициенты двух многочленов . Поместить в массив c коэффициенты их произведения. (Числа k, l, m - натуральные, m = k + l; элемент массива с индексом i содержит коэффициент при x в степени i.) Пожалуйста помогите решить!!
C++ Ошибка в case http://www.cyberforum.ru/cpp-beginners/thread382365.html
#include <iostream.h> #include <conio.h> #include <iomanip.h> #include <system.hpp> int vvod(); int vivod(int n1, int s1); int obrab(int n1); int *p; int i; int main()
C++ Вычислить произведение первых n сомножителей на C++ Дано натуральное число n. Вычислить произведение первых n сомножителей: (1/1)*(3/2)*(5/3)*..... Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на Ваш вопрос ответят. подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
12.11.2011, 18:10     Парсинг значений из командной строки
std::istringstream::in определяет режим работы потока. В данном случае это поток "ввода".

if( !(is >> temp.a) || is.get() != '/' || !(is >> temp.b) )

слева направо выполняются действия: ввода из потока в temp.a. Если нет ошибки - чтение следующего символа. Если он == '/' - ввод из потока в temp.b. Если нет ошибки - идём дальше. Если на одной из операций произошла ошибка, то

throw std::runtime_error( "bat ratio format" );

выбрасывается исключение с текстом "bad ratio format". Кстати, у меня там очепятка Это исключение ловится в блоке try{ ... } catch( std::runtime_error &e ){ ... } в мэйне.



Цитата Сообщение от MishQa Посмотреть сообщение
И далее идем от начала до конца вектора и печатаем
std::cout << it->a << '/' << it->b << "; ";
it->a что это такое?
it - это объект-итератор, обходящий вектор. it-> - это доступ к элементу текущего элемента вектора. Это как array[i].a и array[i].b с простыми массивами. Кстати, std::vector умеет и индексировать элементы как обычный массив, так что вместо итераторов можно было бы использовать счётчик, возможно было бы лучше и быстрее. Просто привычка.

Если что не понятно - спрашивайте. Удачи

Добавлено через 1 минуту
Альтернативный синтаксис у итератора - *(it).a и *(it).b. Как разыменовывание указателя на элемент массива.

Добавлено через 1 минуту

Не по теме:

Nameless One, кстати, getopt поддерживается MinGW.



Добавлено через 59 секунд
Цитата Сообщение от MishQa Посмотреть сообщение
проходимся по всем аргументам командной строки и записываем их в волшебный для меня поток...
Это тот же std::cin, только читающий не со стандартного потока ввода, а из std::string или сишной строки.
 
Текущее время: 20:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru