C++中的IO库

来源:百度知道 编辑:UC知道 时间:2024/05/31 05:43:43
编写了一个函数:
std::istream& get(std::istream& in)
{
int ival;
while(in>>ival,!in.eof()){
throw std::runtime_error("io stream corrupted");
if(in.fail()){
std::cerr<<"bad data,try again";
in.clear();
in.ignore(200,' ');
continue;
}
std::cout<<ival<<" ";
}
in.clear();
return in;
}
它要求编写的这个get函数的声明放在头文件get.hpp中,其定义放在实现文件get.cpp中,就可以编写函数来调用。
请问下到底怎样将声明和定义放置,才能使用#include "get.hpp"???
能否详细点说明,我C++初学者 不太懂。

你问题的解决方案是(下面的可以算一种格式了):
// get.hpp

#include <iostream>
// 提供std::istream;
std::istream& get(std::istream&);

// get.cpp
#include <stdexcept>
// std::runtime_error在stdexcept文件中
#include "get.hpp"
//因为get.hpp中包含了<iostream>文件,所以在这里没有必要再包含一次
std::istream& get(std::istream& in)
{
int ival;
while(in>>ival,!in.eof()){
throw std::runtime_error("io stream corrupted");
if(in.fail()){
std::cerr<<"bad data,try again";
in.clear();
in.ignore(200,' ');
continue;
}
std::cout<<ival<<" ";
}
in.clear();
return in;
}

// main.cpp
主函数
#include "get.hpp"

int main ()
{
get(std::cin);
return 0;
}