Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 56
1

Разбить дату на 3 переменные

30.10.2015, 16:08. Показов 4997. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте нужно разделить дату на 3 числовые переменные (int day, mouth, year. Форматы даты следующий 31/12/2012
Подскажите как можно это сделать. спасибо заранее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2015, 16:08
Ответы с готовыми решениями:

Записать в переменные дату
Переменным (int!) Day присвоить текущее число,Month присвоить месяц и Year присвоить текущие...

Занести системную дату в переменные day, month, year
У меня есть три переменные: int day; int month; int year; и мне нужно "запихнуть" в них...

Распарсить строку и записать дату рождения в три целочисленные переменные - отдельно день, месяц и год
Столкнулся с такой проблемой, дана строка(дата рождения, числа разделены двоеточиями ) ,из нее...

Разбить дату на 3 переменные
Здравствуйте у меня такая проблема мне нужно разбить дату на 3 переменные $date =...

9
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
30.10.2015, 16:16 2
C++
1
2
3
4
5
6
string dt = "31/12/2012";
int d, m, y;
istringstream iss(dt);
(iss >> d).get();
(iss >> m).get();
iss >> y;
1
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
30.10.2015, 16:17 3
Darkstar,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
using namespace std;
struct date {
    int day;
    int month;
    int year;
    char ch;
    date() :day(0), month(0), year(0), ch('/') {}
};
void input(date&dd) {
    cin >> dd.day >> dd.month >> dd.year;
}
void output(const date&dd) {
    cout << dd.day << dd.ch << dd.month << dd.ch << dd.year << endl;
}
int main() {
    date mydate;
    input(mydate);
    output(mydate);
    system("pause");
    return 0;
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
30.10.2015, 16:19 4
anti-k, а строка где?
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
30.10.2015, 16:21 5
nmcf, nmcf,
C++
1
(iss >> d).get();
Мое почтение! Это для того что бы ввести '/'?

Добавлено через 43 секунды
nmcf,А где в задании строка?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
30.10.2015, 16:22 6
Чтобы пропустить.

Добавлено через 30 секунд
Цитата Сообщение от anti-k Посмотреть сообщение
А где в задании строка?
Ну по смыслу строка, если нужно числовые переменные получить.
1
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
30.10.2015, 16:26 7
nmcf,
Цитата Сообщение от nmcf Посмотреть сообщение
Чтобы пропустить.
ну да, что бы пропустить ))))
а как работает
C++
1
cin.sync()
? Его в этом случае можно юзать?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
30.10.2015, 17:27 8
sync() - мутная функция, которая зависит от реализации. Надо использовать get().
1
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
30.10.2015, 17:36 9
nmcf,
Спасибо, а можно еще буфер почистить. А как его почистить если я не знаю размера (в принципе не знаю чего там находится?)
0
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
30.10.2015, 17:43 10
Цитата Сообщение от nmcf Посмотреть сообщение
sync() - мутная функция, которая зависит от реализации
ага, под Linux'ом работает совсем не так как под виндой.

Вариант с бустом
C++
1
2
3
4
std::string date("12/12/2015");
std::vector<std::string> result;
boost::split(result, date, boost::is_any_of("/"));
// тут result[0] == "12", result[1] == "12", result[2] == "2015"
Добавлено через 4 минуты
Еще в конец извращенный вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <sstream>
#include <string>
#include <locale>
#include <cstddef>
 
int main()
{
    std::ctype<char>::mask table[std::ctype<char>::table_size] = { std::ctype<char>::mask() };
    table[static_cast<std::size_t>('/')] = std::ctype<char>::space;
 
    std::string str = "12/12/2015";
    std::istringstream stream(str);
    stream.imbue(std::locale(stream.getloc(), new std::ctype<char>(table)));
 
    std::string d, m, y;
    stream >> d >> m >> y;
 
    std::cout << d << " " << m << " " << y << std::endl;
 
    return 0;
}
1
30.10.2015, 17:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2015, 17:43
Помогаю со студенческими работами здесь

Дату разбить на данные .
Есть в БД DATE - 12.03.2010 Нужно разбить на данные DATE . 12 день 03 месяц 2010 год . Вот так...

Разбить дату по полям в таблице
Подскажите как лучше сделать. В таблице есть три поля. Одно текстовое и в ней &quot;дата&quot; формата...

Разбить строку на переменные
Всем привет, затеял сделать прогу для упрощения расчетов по статистике. Нужна помощь! Пример...

как разбить дату на целые числа
ПОМОГИТЕ ПОЖАЛУЙСТА Цель есть дата типа 10,01,2001 мне надо прибавить 7 ко дню чтобы получить...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru