1
0
mirror of https://github.com/biergaizi/codecrypt synced 2024-06-27 09:18:16 +00:00

iohelpers: templatize read_all_input

This commit is contained in:
Mirek Kratochvil 2014-03-07 08:27:23 +01:00
parent 0cdd83dbc4
commit ad96ee03d2
2 changed files with 19 additions and 15 deletions

@ -36,17 +36,3 @@ bool redirect_cout (const std::string& fn)
return true;
}
#define bufsize 1024
bool read_all_input (std::string&data, std::istream&input)
{
data.clear();
char buf[bufsize];
for (;;) {
input.read (buf, bufsize);
if (input) data.append (buf, bufsize);
else if (input.eof() ) {
data.append (buf, input.gcount() );
return true;
} else return false;
}
}

@ -27,6 +27,8 @@
#include <fstream>
#include <string>
#include "types.h"
#define out(x) std::cout << x << std::endl
#define out_bin(x) std::cout << x
#define outeol std::cout << std::endl
@ -41,6 +43,22 @@
bool redirect_cin (const std::string& fn);
bool redirect_cout (const std::string& fn);
bool read_all_input (std::string&, std::istream&in = std::cin);
#define readall_bufsize 8192
template<class output_seq>
bool read_all_input (output_seq&data, std::istream&input = std::cin)
{
data.clear();
char buf[readall_bufsize];
for (;;) {
input.read (buf, readall_bufsize);
if (input) data.insert (data.end(), buf,
buf + readall_bufsize);
else if (input.eof() ) {
data.insert (data.end(), buf,
buf + input.gcount() );
return true;
} else return false;
}
}
#endif