从.csv中读取日期并将它们放入int

时间:2016-02-11 17:13:20

标签: char int getline

我的输入来自.csv,如下所示:

1135,"2015-07-19","2015-07-28",446
1130,"2015-12-14","2015-12-21",458
1105,"2015-04-01","2015-04-12",761
1125,"2015-01-01","2015-01-11",692

...等

我需要将2015,07和19放在3个不同的int变量(int year,month,day)中,这样我就可以计算出一本特定的书籍是否可供出租。我一直在使用getline,但遗憾的是getline只能使用char而我无法将我的char转换回int ...并且没有int我无法计算我的书是否可用。

这是我的代码:

while(!fp2.eof())
{
    fp2.getline(copyNo,sizeof(copyNo),',');
    fp2.ignore(1);
    fp2.getline(dateOut.year,sizeof(dateOut.year),'-');
    fp2.getline(dateOut.month,sizeof(dateOut.month),'-');
    fp2.getline(dateOut.day,sizeof(dateOut.day),'"');
    fp2.ignore(2);
    fp2.getline(dateDue.year,sizeof(dateDue.year),'-');
    fp2.getline(dateDue.month,sizeof(dateDue.month),'-');
    fp2.getline(dateDue.day,sizeof(dateDue.day),'"');
    fp2.ignore(1);
    fp2.getline(borrowerNo,sizeof(borrowerNo));
}

有没有办法可以改变我的getlines,所以日期的数量是整数?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

输入完全与.csv(YYYY-MM-DD)一样的字符串输入,将我的解析改为1字符串并执行如下操作:

    while(!fp2.eof())
    {
        fp2.getline(copyNo,sizeof(copyNo),',');
        fp2.ignore(1);
        getline(fp2,dateOut,'"');
        fp2.ignore(2);
        getline(fp2,dateDue,'"');
        fp2.ignore(1);
        fp2.getline(borrowerNo,sizeof(borrowerNo));
    }

if(dateDue<today)