使用iostream处理错误

时间:2014-03-25 14:25:32

标签: c++ iostream

我从2008年开始撰写[Bjarne_Stroustrup]Programming-Principles-and-Practice-Using-C++本书,5。名为Errors的章节正在使用std_lib_facilities.h和名为error的函数。

以下是示例:

if(x<=0) error("non-positive x");
if(y<=0) error("non-positive y");
int area1=area(x,y);

由于我使用的 Visual Studio 2012 没有std_lib_facilities.h,因此此错误处理程序无效!什么是iostream的错误处理功能,我在哪里可以找到并研究它?

3 个答案:

答案 0 :(得分:5)

C ++标准库的头文件(iostreamvector等)最后没有.h。 (但是,大多数第三方库都使用.h。)因为std_lib_facilities.h确实有.h,所以假设它不是标准库而不是Visual C ++应该期望的东西是合理的。提供。

在这种情况下,快速Google搜索会显示它随您的图书提供,可从http://www.stroustrup.com/Programming/std_lib_facilities.h下载。

答案 1 :(得分:5)

std_lib_facilities.h是由Bjarne Stroustrup编写的助手标题。

  

它提供了最常见的标准头文件(在全局命名空间中)     最小的异常/错误支持。

您可以在快捷方式下找到它here标准库访问标题

错误函数定义如下:

// error() simply disguises throws:
inline void error(const string& s)
{
    throw runtime_error(s);
}

Visual Studio

Here您可以找到有关如何让std_lib_facilities.h处理VS的教程。


还有学生注意事项......

  

学生:请不要试图了解标题的详细信息   然而。一切都将被解释。此标题主要用于您   不必同时理解每个概念。

答案 2 :(得分:0)

  

因为我使用的Visual Studio 2012没有   “std_lib_facilities.h”,此错误处理程序无法正常工作!什么是   iostream的错误处理功能以及我在哪里可以找到并研究它?

std_lib_facilities.h标头不是c ++标准提供的。因此,您在VS2012中遇到此类错误。您需要编写自己的逻辑并将其放入某个文件并将其包含在您的程序中。

您可以按如下方式实现自己的error()函数基本版本:

#include<iostream>
template<typename T>
void error(const T& msg) {
 std::cerr<<msg<<std::endl;
}