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

Из входных аргументов достать значения - C++

Восстановить пароль Регистрация
 
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
27.05.2013, 13:50     Из входных аргументов достать значения #1
Здравствуйте,

есть консольная программа time.exe.
Запускаем ее через консоль: time.exe "15:00 PM" dms
Нужно: как красиво распознать время из argv[1], т.е. "15:00 PM" ?
Нужно, чтобы переменные приняли:
C++
1
2
3
int hh; // приняли часы
int mm; // приняли минуты
char* part = new char[]; // приняли PM
никогда не пользовался входными аргументами, но сейчас есть задача и хочется сделать красиво, а я только костылями могу решить проблему.

Добавлено через 6 минут
C++
1
char* part = new char[3]; // приняли PM
зы
не обязательно char* может у вас есть идеи по лучше

Добавлено через 55 минут
для времени вот такой вариант написал
C++
1
2
3
4
5
6
int     hh,mm;
 
hh=atoi(argv[1]);
argv[1][0]=argv[1][3];
argv[1][1]=argv[1][4];
mm=atoi(argv[1]);
но это же не гуд? Как красиво и правильно это реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 13:50     Из входных аргументов достать значения
Посмотрите здесь:

C++ цифры во входных данных.
C++ Функция, возвращающая сумму двух входных параметров (если первый параметр четный) или их разность
Чтение входных дат C++
Шаблон функции для удвоения максимального значения из трех аргументов C++
Есть функция с кучей аргументов, как её вызвать в другой функции (если половины аргументов у меня нет)? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,831
Записей в блоге: 2
Завершенные тесты: 1
27.05.2013, 13:52     Из входных аргументов достать значения #2
va_list
va_arg
va_start
va_end

http://www.cplusplus.com/reference/cstdarg/va_list/
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
27.05.2013, 16:44  [ТС]     Из входных аргументов достать значения #3
Croessmah, не совсем то, что я просил подсказать.
Посмотрел разобрался, но это не решает мой вопрос.

Поясню:
запуск программы с консоли
Код
time.exe "15:00 PM" dms
argv[1] содержит в себе 15:00 PM.
я прошу подсказать грамотный вариант извлечения из массива argv[1] отдельно значения 15, 0, PM
соответственно int, int, char.

зы. хотя про последний уже решил ограничиться переменной bool, ибо AM/PM это можно взять как 0/1.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,831
Записей в блоге: 2
Завершенные тесты: 1
27.05.2013, 17:43     Из входных аргументов достать значения #4
Цитата Сообщение от GBIT Посмотреть сообщение
Croessmah, не совсем то, что я просил подсказать.
Да, что-то я тупанул
Для разбора данной строки можете использовать строковый поток stringstream

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
    std::string str="15:06 PM";
    std::replace(str.begin(),str.end(),':',' ');
    std::stringstream ss(str);
    int h,m;
    std::string text;
    ss>>h>>m>>text;
    std::cout<<"Hours: "<<h<<"\nMinutes: "<<m<<"\nText: "<<text<<std::endl;
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
28.05.2013, 19:06  [ТС]     Из входных аргументов достать значения #5
Цитата Сообщение от Croessmah Посмотреть сообщение
std::replace(str.begin(),str.end(),':',' ');
error C2039: replase: не является членом "std"
Цитата Сообщение от Croessmah Посмотреть сообщение
std::stringstream ss(str);
error C2079: "ss" использует неопределенный class "std::basic_stringstream<_Elem,_Traits,_Alloc>"

чет не едут у меня лыжи никак

Добавлено через 49 минут
проехали, крабанул
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <algorithm>    //  replace
#include <iostream>
#include <sstream>      //  stringstream
 
int main()
{
 
    std::string sStr="15:06 PM";
    std::replace(sStr.begin(),sStr.end(),':',' ');
    std::stringstream ss(sStr);
    int h,m;
    std::string text;
    ss>>h>>m>>text;
    std::cout<<"Hours: "<<h<<"\nMinutes: "<<m<<"\nText: "<<text<<std::endl;
 
}
Yandex
Объявления
28.05.2013, 19:06     Из входных аргументов достать значения
Ответ Создать тему
Опции темы

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