输入日,月,年并存储在单独的结构中

时间:2018-08-24 07:33:06

标签: c++

当前,我正在执行一项需要我将日期存储到结构(日,月,年)中的任务,但是当用户在一行中全部输入时,我不知道如何分隔日期

struct Date
{

int day;
int month;
int year;
}hire_date;

int main()
{

cout<<"Enter employee hired date(dd/mm/yyyy) :";

cin>>hire_date.day;
cin>>hire_date.month;
cin>>hire_date.year;`
}

1 个答案:

答案 0 :(得分:1)

我最近在SO: Read file line by line中看到了Kerrek对于类似问题的好答案,并为分隔符把戏附加了注释。

因此,我寻找了这个并将其转换为您的标准输入要求(实际上很简单,省力):

#include <iostream>

struct Date {
  int day, month, year;
};

int main()
{
  std::cout<< "Enter employee hired date (dd/mm/yyyy): ";
  Date hireDate; char sep1, sep2;
  std::cin >> hireDate.day >> sep1 >> hireDate.month >> sep2 >> hireDate.year;
  if (std::cin && sep1 == '/' && sep2 == '/') {
    std::cout << "Got: "
      << hireDate.day << '/' << hireDate.month << '/' << hireDate.year << '\n';
  } else {
    std::cerr << "ERROR: dd/mm/yyyy expected!\n";
  }
  return 0;
}

经过编译和测试:

Enter employee hired date (dd/mm/yyyy): 28/08/2018
Got: 28/8/2018

Life Demo on ideone

注意:

这既不考虑输入数字的验证(它们是否形成有效日期),也不考虑输入数字的数量与格式匹配。对于后者,可能最好遵循有关std::getline()的提示,即以std::string的形式获取输入,并通过char首先验证char的语法正确。