📄 fatal.h
字号:
/* 2008 (c) Dorival M. Pedroso */#ifndef MPM_EXCEPTION_H#define MPM_EXCEPTION_H// STL#include <iostream> // for std::cout#include <string> // for std::string#include <cstdarg> // for va_list, va_start, va_endclass Fatal{public: // Constructor Fatal (std::string const & Fmt, ...); // Methods void Cout () const { std::cout << "[1;31m" << "Fatal: " << _msg << "[0m" << std::endl; }private: // Data std::string _msg; // Private int _set_msg (char const * Fmt, va_list ArgList);};/////////////////////////////////////////////////////////////////////////////////////////// Implementation //////* Constructor */inline Fatal::Fatal(std::string const & Fmt, ...){ va_list arg_list; va_start (arg_list, Fmt); _set_msg (Fmt.c_str(), arg_list); va_end (arg_list);}/* Private */inline int Fatal::_set_msg(char const * Fmt, va_list ArgList){ const int size = 4048; // TODO: remove this limitation by using a loop and reallocating space char buffer[size]; int len = std::vsnprintf(buffer, size, Fmt, ArgList); _msg.clear(); if (len<0) _msg.append("String::_set_msg: INTERNAL ERROR: std::vsnprintf FAILED"); else { buffer[len]='\0'; if (len>size) _msg.append("String::_set_msg: INTERNAL ERROR: std::vsnprintf MESSAGE TRUNCATED: "); _msg.append(buffer); } return len;}#endif // MPM_EXCEPTION_H/* 2008 (c) Dorival M. Pedroso */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -