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 
60 template <class type>
61 bool ReadFile(File& f, std::vector<type>& v)
62 {
63  size_t size;
64  if(!ReadFile(f,size)) return false;
65  v.resize(size);
66  for(size_t i=0;i<size;i++)
67  if(!ReadFile(f,v[i])) return false;
68  return true;
69 }
70 
72 template <class type>
73 bool WriteFile(File& f, const std::vector<type>& v)
74 {
75  size_t size=v.size();
76  if(!WriteFile(f,size)) return false;
77  for(size_t i=0;i<size;i++)
78  if(!WriteFile(f,v[i])) return false;
79  return true;
80 }
81 
84 template <class type>
85 bool InputVector(std::istream& in, std::vector<type>& v)
86 {
87  size_t size;
88  in>>size;
89  if(in.bad()) return false;
90  v.resize(size);
91  for(size_t i=0;i<size;i++) {
92  in>>v[i];
93  if(in.bad()) return false;
94  }
95  return true;
96 }
97 
100 template <class type>
101 bool OutputVector(std::ostream& out, const std::vector<type>& v)
102 {
103  out<<v.size()<<'\t';
104  for(size_t i=0;i<v.size();i++) {
105  out<<v[i]<<" ";
106  }
107  return true;
108 }
109 
112 #endif
bool GetFileContents(const char *filename, std::string &contents)
Returns the entire contents of a file as a string.
Definition: ioutils.cpp:296
bool SafeInputString(std::istream &in, char *str, int n)
Inputs the string with quotes if necessary.
Definition: ioutils.cpp:169
bool SafeInputFloat(std::istream &in, float &f)
I/O with denormalized floats (infinity, NaN)
Definition: ioutils.cpp:227
bool InputVector(std::istream &in, std::vector< type > &v)
Definition: ioutils.h:85
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:57
bool WriteFile(File &f, const std::vector< type > &v)
WriteFile() for STL vectors. See File.h.
Definition: ioutils.h:73
void OutputQuotedString(std::ostream &out, const char *str)
Outputs "str". Outputs " for quote characters in str.
Definition: ioutils.cpp:121
void EatWhitespace(std::istream &in)
Eats up whitespace at beginning of stream.
Definition: ioutils.cpp:40
void SafeOutputString(std::ostream &out, const char *str)
Outputs the string with quotes if necessary.
Definition: ioutils.cpp:214
A unified interface for reading/writing binary data to file.
bool OutputVector(std::ostream &out, const std::vector< type > &v)
Definition: ioutils.h:101
bool ReadFile(File &f, std::vector< type > &v)
ReadFile() for STL vectors. See File.h.
Definition: ioutils.h:61
bool InputToken(std::istream &in, const char *characterSet, std::string &)
Definition: ioutils.cpp:45
int TranslateEscape(int c)
Definition: ioutils.cpp:13
bool StringContainsQuote(char *str)
Returns true if str has a quote character.
A cross-platform class for reading/writing binary data.
Definition: File.h:47
bool StringRequiresQuoting(char *str)
Returns true if outputting string requires quotations.