KrisLibrary  1.0.0
ioutils.h
Go to the documentation of this file.
1 #ifndef IO_UTILITIES_H
2 #define IO_UTILITIES_H
3 
4 #include <iostream>
5 #include <string>
6 #include <vector>
7 #include <KrisLibrary/File.h>
8 
16 
18 void EatWhitespace(std::istream& in);
19 
22 bool InputToken(std::istream& in,const char* characterSet,std::string&);
23 
25 bool InputQuotedString(std::istream& in, char* str, int n);
26 bool InputQuotedString(std::istream& in, std::string&);
28 void OutputQuotedString(std::ostream& out, const char* str);
29 void OutputQuotedString(std::ostream& out, const std::string&);
31 bool StringContainsQuote(char* str);
32 bool StringContainsQuote(const std::string& str);
34 bool StringRequiresQuoting(char* str);
35 bool StringRequiresQuoting(const std::string& str);
36 
38 bool SafeInputString(std::istream& in, char* str,int n);
39 bool SafeInputString(std::istream& in, std::string&);
41 void SafeOutputString(std::ostream& out, const char* str);
42 void SafeOutputString(std::ostream& out, const std::string&);
43 
45 bool SafeInputFloat(std::istream& in, float& f);
46 bool SafeInputFloat(std::istream& in, double& f);
47 bool SafeOutputFloat(std::ostream& out, float f);
48 bool SafeOutputFloat(std::ostream& out, double f);
49 
52 int TranslateEscape(int c);
53 //translates escape sequences (e.g. \n, \t, etc) over str
54 std::string TranslateEscapes(const std::string& str);
55 
57 bool GetFileContents(const char *filename,std::string& contents);
58 
61 bool GetURLContents(const char* url,std::string& contents);
62 
65 bool GetURLDownload(const char* url,const char* filename);
66 
68 template <class type>
69 bool ReadFile(File& f, std::vector<type>& v)
70 {
71  size_t size;
72  if(!ReadFile(f,size)) return false;
73  v.resize(size);
74  for(size_t i=0;i<size;i++)
75  if(!ReadFile(f,v[i])) return false;
76  return true;
77 }
78 
80 template <class type>
81 bool WriteFile(File& f, const std::vector<type>& v)
82 {
83  size_t size=v.size();
84  if(!WriteFile(f,size)) return false;
85  for(size_t i=0;i<size;i++)
86  if(!WriteFile(f,v[i])) return false;
87  return true;
88 }
89 
92 template <class type>
93 bool InputVector(std::istream& in, std::vector<type>& v)
94 {
95  size_t size;
96  in>>size;
97  if(in.bad()) return false;
98  v.resize(size);
99  for(size_t i=0;i<size;i++) {
100  in>>v[i];
101  if(in.bad()) return false;
102  }
103  return true;
104 }
105 
108 template <class type>
109 bool OutputVector(std::ostream& out, const std::vector<type>& v)
110 {
111  out<<v.size()<<'\t';
112  for(size_t i=0;i<v.size();i++) {
113  out<<v[i]<<" ";
114  }
115  return true;
116 }
117 
120 #endif
bool GetFileContents(const char *filename, std::string &contents)
Returns the entire contents of a file as a string.
Definition: ioutils.cpp:301
bool SafeInputString(std::istream &in, char *str, int n)
Inputs the string with quotes if necessary.
Definition: ioutils.cpp:174
bool SafeInputFloat(std::istream &in, float &f)
I/O with denormalized floats (infinity, NaN)
Definition: ioutils.cpp:232
bool InputVector(std::istream &in, std::vector< type > &v)
Definition: ioutils.h:93
bool InputQuotedString(std::istream &in, char *str, int n)
Gets a quoted string from the istream into a char buffer (or string)
Definition: ioutils.cpp:58
bool WriteFile(File &f, const std::vector< type > &v)
WriteFile() for STL vectors. See File.h.
Definition: ioutils.h:81
void OutputQuotedString(std::ostream &out, const char *str)
Outputs "str". Outputs " for quote characters in str.
Definition: ioutils.cpp:126
void EatWhitespace(std::istream &in)
Eats up whitespace at beginning of stream.
Definition: ioutils.cpp:41
void SafeOutputString(std::ostream &out, const char *str)
Outputs the string with quotes if necessary.
Definition: ioutils.cpp:219
A unified interface for reading/writing binary data to file.
bool GetURLContents(const char *url, std::string &contents)
Definition: ioutils.cpp:403
bool OutputVector(std::ostream &out, const std::vector< type > &v)
Definition: ioutils.h:109
bool ReadFile(File &f, std::vector< type > &v)
ReadFile() for STL vectors. See File.h.
Definition: ioutils.h:69
bool InputToken(std::istream &in, const char *characterSet, std::string &)
Definition: ioutils.cpp:46
int TranslateEscape(int c)
Definition: ioutils.cpp:14
bool StringContainsQuote(char *str)
Returns true if str has a quote character.
bool GetURLDownload(const char *url, const char *filename)
Definition: ioutils.cpp:397
A cross-platform class for reading/writing binary data.
Definition: File.h:47
bool StringRequiresQuoting(char *str)
Returns true if outputting string requires quotations.