C++: abnormal program termination 帮忙看一下

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:56:22
//我的编译器是VC6.0
#include<iostream.h>
#include<iomanip.h>
#include<string>
//using namespace std;

class Date{
int year, month, day;
void init();
public:
Date(const std::string& s);
Date(int y=2000, int m=1, int d=1);
void display();
friend ostream& operator<<(ostream& o, const Date& d);
};

void Date::init(){
if(year>5000 || year<1 || month<1 || month>12 || day<1 || day>31)
exit(1);
}

Date::Date(const std::string& s){
year=atoi(s.substr(0, 4).c_str() );
month=atoi(s.substr(5,2).c_str() );
day=atoi(s.substr(8, 2).c_str() );
init();
}

Date::Date(int y, int m, int d){
year=y, month=m, day=d;
init();
}

void Date::display()
{
cout<<year<<"-"<<month<<"-"<<day;
}

ostream& operator<<(ostrea

我用GCC来编译,由于编译器比较新,需要把iostream.h和iomainp.h改为iostream和iomainp,其它什么也没有变,编译成功,运行没有错误,结果:
2005-08-21

2008-9-114

用vs2005执行时候,把
#include<iostream.h>
#include<iomanip.h>
#include<string>
//using namespace std;
改成
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
以后,执行正常,结果也正常。楼主试一下吧

楼上zuojie_1982说的没错!

反常的程序终止?
我运行除了你头文件用旧式的写法的警告外,并未遇到这个错误