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

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

Войти
Регистрация
Восстановить пароль
 
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
#1

Помогите с временем - C++

11.12.2011, 23:46. Просмотров 379. Ответов 8
Метки нет (Все метки)

Использую функцию strftime/ для получения частей времени. Пытаюсь сделать это отдельной функцией и вывести, но почему-то не получается... Хотя в нутри функции если делать вывод, то почти всё ок, за исключение нуля на конце.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <time.h>
 
using namespace std;
 
int vremia(char *format ){
    char buffer[80];
    time_t seconds = time(NULL);
    tm* timeinfo = localtime(&seconds);
    strftime(buffer, 80, format, timeinfo);
 
    return buffer;
}
 
int main(){
    
    cout << vremia("%Y");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 23:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите с временем (C++):

Работа со временем - C++
Добрый день. Есть два промежутка времени. Начальное и конечное. С помощью цикла do .. while выполняю действие, пока условие истина (если...

Управление временем - C++
Как управлять временем? Например хочу написать программу, которая каждые 5 секунд выводит сообщение &quot;Hi!&quot;. Скажи как это...

Работа со временем - C++
Мне нужно заходить в if через каждые 10 миллисекунд я пытался через time(NULL) брать 2 переменные и считать их разницу но компилятор на...

Работа с временем - C++
Здравствуйте! Помогите пожалуйста с идеями. Надо написать программку которая будет напоминать о ранее записанных действиях. Как я...

Работа с временем - C++
Как подсчитать сумму времени? тоесть что бы не считало просто числа,а именно время часы:минуты с разделителем &quot;:&quot;

Операции со временем - C++
Здравствуйте, хотел бы узнать на счет времени и операций с ними. Есть задание, часть которого связана со временем, а именно: необходимо...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
villu
203 / 203 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
11.12.2011, 23:50 #2
1: ты возвращаешь указатель на char как инт
2: ты возвращаешь указатель на локальные данные, которые по выходу из функции уже невалидны
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 23:51  [ТС] #3
это же мне уже говорил кмапилятор(за исклчением второго, но я догадываюсь об этом уже), мне же это нужно как-то решит
villu
203 / 203 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
11.12.2011, 23:53 #4
C++
1
2
3
4
5
6
7
8
std::string vremia(char *format ){
        char buffer[80];
        time_t seconds = time(NULL);
        tm* timeinfo = localtime(&seconds);
        strftime(buffer, 80, format, timeinfo);
        // не забудь проверки результатов функций
        return std::string(buffer);
}
Как вариант, если на с++ нужна.
Если нужна Си функция, то можно передать указатель валиднго буфера как параметр
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 00:03  [ТС] #5
А возможно сделать что бы оно возвращало или int или string в зависимости от потребностей ?
villu
203 / 203 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.12.2011, 00:06 #6
а например? не совсем понимаю как это может пригодится.
можно, например шаблон.
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 00:19  [ТС] #7
Та я это так ради интереса узнал. Мне то нужны только числа, но он может например название дня возвратить.

Ну и ещё тако вопрос, вот при вызове функции с параметром %m он возвращает номер месяца. Сейчас к примеру 12, но вот например если август, возвращает 08. Если я сделаю %10, оно даст 8 или будит ошибка? В переменную 08 как-то не удалось забить...
villu
203 / 203 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.12.2011, 00:26 #8
да можно накрутить, но, думаю, смысла немного от такого.
Можно сделать проще.
Объявить енум (год, месяц, день ... ) и по значениям выводить значение полей timeinfo.

C
1
2
3
4
5
6
7
8
9
10
11
           struct tm {
               int tm_sec;         /* seconds */
               int tm_min;         /* minutes */
               int tm_hour;        /* hours */
               int tm_mday;        /* day of the month */
               int tm_mon;         /* month */
               int tm_year;        /* year */
               int tm_wday;        /* day of the week */
               int tm_yday;        /* day in the year */
               int tm_isdst;       /* daylight saving time */
           };
А если оставить строку с форматированием, то не совсем ясно что из этого формата брать за int, если там, например, 2 значения "%Y %m"
nonamez123
185 / 181 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 00:30  [ТС] #9
не понял... Если возможно, поподробнее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 00:30
Привет! Вот еще темы с ответами:

Операции со временем - C++
Здравствуйте. Прошу помочь в решении задачи: Время задается в формате час.минута.секунда. Реализовать следующие операции (учесть...

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

Работа со временем и датами - C++
Интересует алгоритм определения дней недели, по количеству секунд с начала периода. Смотрел Boost, но там такого метода в классах не нашел.

Работа с датой и временем - C++
Доброе время суток дорогие программисты, у меня возникла очень большая проблема, которую я не могу решить. Если вам не трудно не могли бы...


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

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

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