2011-08-21 245 views
-2

我正在从数据库中读取日期作为字符串。我希望把它分解成整数,所以我可以将它传递给我的日期构造函数,所以我用了以下内容:从字符串中读取整数

int y,m,d; 
sscanf(test,"%d-%d-%d",&y,&m,&d); 
cout<<"date is: "<<y<<"-"<<m<<"-"<<d<<"\n"; 
Date cdr; 
    cdr=Date(d,m,y); 
    setDate(cdr); 
cout<<"cdr is "<<cdr.getDay();//this is returning 0 

和这里的getDay()

inline int getDay(void) const {return d_;} 

问题是COUT节目整数很好,但是当我通过这些我Date构造 输出显示这样一串数字: 1176523603-1162761289-1176531567

你能帮助我解决这个问题... THX!

+0

如果数字打印正常,问题很可能与您的Date类有关。请显示该代码。 – Mat

+0

也许值得一提的是创建标准C'tm'结构的''strftime()'](http://www.cplusplus.com/reference/clibrary/ctime/strftime/)函数。 –

+1

@itcplpl:确定现在显示输出数字的代码。最重要的是编辑上面的帖子来发布**完整的**程序。我们一直都会这样做,新手会发布代码,但总是错误在他们没有发布的代码中。这就是为什么你应该发布一个完整的程序。 – john

回答

1

看着张贴在错误上述评论Date类是这里

class Date 
{ 
... 
Date(const Date& dd){} 
Date& operator=(const Date&){} 
... 
}; 

删除这些方法都和代码可能会奏效。

+0

但我为什么需要删除它们? – itcplpl

+1

因为它们是在复制Date对象时使用的,但是因为您没有正确定义它们,所以它们不起作用,并且会导致您看到的那种错误。但是你不需要为你的Date类定义它们,因为编译器会为你定义正确的。你应该阅读一本关于C++的书,并阅读关于拷贝构造函数和赋值操作符的部分,这是一个重要的话题,而且新手经常出错。 – john

+0

会做,谢谢:-) – itcplpl