13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 270 — #308<br />

✐<br />

Capítulo 9. Funciones inline<br />

}<br />

const std::string& msg = "Requirem<strong>en</strong>t failed"){<br />

using namespace std;<br />

if (!requirem<strong>en</strong>t) {<br />

fputs(msg.c_str(), stderr);<br />

fputs("\n", stderr);<br />

exit(1);<br />

}<br />

inline void requireArgs(int argc, int args,<br />

const std::string& msg =<br />

"Must use %d argum<strong>en</strong>ts") {<br />

using namespace std;<br />

if (argc != args + 1) {<br />

fprintf(stderr, msg.c_str(), args);<br />

fputs("\n", stderr);<br />

exit(1);<br />

}<br />

}<br />

inline void requireMinArgs(int argc, int minArgs,<br />

const std::string& msg =<br />

"Must use at least %d argum<strong>en</strong>ts") {<br />

using namespace std;<br />

if(argc < minArgs + 1) {<br />

fprintf(stderr, msg.c_str(), minArgs);<br />

fputs("\n", stderr);<br />

exit(1);<br />

}<br />

}<br />

inline void assure(std::ifstream& in,<br />

const std::string& fil<strong>en</strong>ame = "") {<br />

using namespace std;<br />

if(!in) {<br />

fprintf(stderr, "Could not op<strong>en</strong> file %s\n",<br />

fil<strong>en</strong>ame.c_str());<br />

exit(1);<br />

}<br />

}<br />

inline void assure(std::ofstream& out,<br />

const std::string& fil<strong>en</strong>ame = "") {<br />

using namespace std;<br />

if(!out) {<br />

fprintf(stderr, "Could not op<strong>en</strong> file %s\n",<br />

fil<strong>en</strong>ame.c_str());<br />

exit(1);<br />

}<br />

}<br />

#<strong>en</strong>dif // REQUIRE_H ///:~<br />

Los valores por defecto proporcionan m<strong>en</strong>sajes razonables que se pued<strong>en</strong> cambiar<br />

si es necesario.<br />

Fíjese <strong>en</strong> que <strong>en</strong> lugar de usar argum<strong>en</strong>tos char* se utiliza const string&. Esto<br />

permite tanto char*, cad<strong>en</strong>as string como argum<strong>en</strong>tos para estas funciones, y así<br />

270<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!