从文件C ++中读取格式化日期

时间:2016-05-27 14:41:14

标签: c++ date ifstream

所以我这个文件有多个这样的日期:

Data
------
abc123
defgh
wz127bdn

我想知道如何从这个文件中读取并将日,月和年存储为3个单独的整数。

感谢。

2 个答案:

答案 0 :(得分:3)

如果istream foo包含您要使用的日期get_time

vector<tm> bar;
tm i;

while(foo >> get_time(&i, "%d.%m.%Y")) bar.push_back(i);

Live Example

当然,防御性输入是最佳实践,对于像日期这样的复杂输入类型,这样做可能非常具有挑战性。如果你正在努力,你会发现这有用:https://stackoverflow.com/a/29413535/2642059

答案 1 :(得分:0)

您可以尝试这样的事情:

// construct stream object and open file 
std::ifstream ifs(file_name.c_str());

// check if opened successfully
if (!ifs) std::cerr <<"Can't open input file!\n";

int year, month, day;
char dot;

// extract date
ifs >> day >> dot >> month >> dot >> year;

// check input format
if (dot != '.') // add ranges for month and days validity
{
    std::cerr <<"Wrong date format!\n";
}

上面的代码可以放在一个(while)循环中,逐行读取文件。