ATLAS Offline Software
Loading...
Searching...
No Matches
AsciiInput Class Reference

A class to provide read access to an ASCII input file. More...

#include <AsciiInput.h>

Collaboration diagram for AsciiInput:

Public Member Functions

 AsciiInput (const std::string &fileName)
 ~AsciiInput ()
int open ()
 Open the input file.
int close ()
 Close the input file.
std::vector< std::string > readRow ()
 Read one line of the input text file into a vector of strings.

Static Public Member Functions

static std::vector< std::string > strToStrVec (const std::string &inputString)
 A helper function to convert a string into a string vector, by using any number of space or tab characters as separators.
static long strToLong (const std::string &inputString)
 A helper function to convert a string to a long value.
static double strToDouble (const std::string &inputString)
 A helper function to convert a string to a double value.

Private Attributes

std::string m_fileName
 Input file name.
std::ifstream m_file
 Input file stream.
char m_lineBuffer [MAX_LINE_LENGTH]
 Character buffers used while parsing the input file.

Static Private Attributes

static const int MAX_LINE_LENGTH = 500
 Size of the character buffers.

Detailed Description

A class to provide read access to an ASCII input file.

Author
W. H. Bell W.Bel.nosp@m.l@ce.nosp@m.rn.ch

Definition at line 18 of file AsciiInput.h.

Constructor & Destructor Documentation

◆ AsciiInput()

AsciiInput::AsciiInput ( const std::string & fileName)

Definition at line 9 of file AsciiInput.cxx.

9 : m_fileName(fileName),
10 m_file() {
11 for(int i=0; i< MAX_LINE_LENGTH;i++ )
12 m_lineBuffer[i]='\0';
13}
std::ifstream m_file
Input file stream.
Definition AsciiInput.h:53
static const int MAX_LINE_LENGTH
Size of the character buffers.
Definition AsciiInput.h:56
std::string m_fileName
Input file name.
Definition AsciiInput.h:50
char m_lineBuffer[MAX_LINE_LENGTH]
Character buffers used while parsing the input file.
Definition AsciiInput.h:59

◆ ~AsciiInput()

AsciiInput::~AsciiInput ( )

Definition at line 17 of file AsciiInput.cxx.

17 {
18}

Member Function Documentation

◆ close()

int AsciiInput::close ( )

Close the input file.

A non-zero value is returned if this is not successful.

Definition at line 32 of file AsciiInput.cxx.

32 {
33 if(m_file.is_open()) {
34 m_file.close();
35 }
36
37 return 0;
38}

◆ open()

int AsciiInput::open ( )

Open the input file.

A non-zero value is returned if this is not successful.

Definition at line 22 of file AsciiInput.cxx.

22 {
23 m_file.open(m_fileName.c_str());
24 if(!m_file) {
25 std::cerr << "Error: could not open " << m_fileName << std::endl;
26 return 1;
27 }
28
29 return 0;
30}

◆ readRow()

std::vector< std::string > AsciiInput::readRow ( )

Read one line of the input text file into a vector of strings.

Any number of space or tab characters are used as separators. If the row contains only separators or the end of file has been reached the returned vector will be empty.

Definition at line 42 of file AsciiInput.cxx.

42 {
43 std::vector<std::string> row;
44
45 // Check if the end of file has been reached.
46 if(m_file.eof()) {
47 std::cout << "End of file reached." << std::endl;
48 return row;
49 }
50
51 // Read one line from the input file. (Need one additional character
52 // for string termination of a word.)
54 if(m_file.eof()) { // True when normally reaching the end of the file.
55 return row;
56 }
57
58 // Convert the cstring to a string.
59 std::string tmpString(m_lineBuffer);
60
61 // Split the string into substrings.
62 return strToStrVec(tmpString);
63}
static std::vector< std::string > strToStrVec(const std::string &inputString)
A helper function to convert a string into a string vector, by using any number of space or tab chara...
row
Appending html table to final .html summary file.

◆ strToDouble()

double AsciiInput::strToDouble ( const std::string & inputString)
static

A helper function to convert a string to a double value.

Definition at line 122 of file AsciiInput.cxx.

122 {
123 double doubleValue;
124 std::istringstream inStr(inputString);
125 inStr >> doubleValue;
126 return doubleValue;
127}

◆ strToLong()

long AsciiInput::strToLong ( const std::string & inputString)
static

A helper function to convert a string to a long value.

Definition at line 113 of file AsciiInput.cxx.

113 {
114 long longValue;
115 std::istringstream inStr(inputString);
116 inStr >> longValue;
117 return longValue;
118}

◆ strToStrVec()

std::vector< std::string > AsciiInput::strToStrVec ( const std::string & inputString)
static

A helper function to convert a string into a string vector, by using any number of space or tab characters as separators.

Definition at line 67 of file AsciiInput.cxx.

67 {
68 std::vector<std::string> strVec;
69 std::string tmpString;
70 size_t stringLength, i;
71
72 stringLength = inputString.length();
73
74 // Loop over all characters in the string.
75 i=0;
76 while(i<stringLength) {
77
78 // Skip over any white spaces at the start of the string.
79 while(inputString[i] == ' ' ||
80 inputString[i] == '\t') {
81 i++;
82 if(i >= stringLength) break;
83 }
84
85 if(i>=stringLength) continue;
86
87 // Copy all non-white space characters until a white space, end of string or comment character.
88 tmpString.clear();
89 while(inputString[i] != ' ' &&
90 inputString[i] != '\t' &&
91 inputString[i] != '#') {
92 tmpString.push_back(inputString[i]);
93 i++;
94 if(i >= stringLength) break;
95 }
96
97 // Push the string back if its length is greater than zero.
98 if(tmpString.length() > 0) {
99 strVec.push_back(tmpString);
100 }
101
102 // Check if a comment was found.
103 if(i < stringLength) {
104 if(inputString[i] == '#') break;
105 }
106 }
107
108 return strVec;
109}

Member Data Documentation

◆ m_file

std::ifstream AsciiInput::m_file
private

Input file stream.

Definition at line 53 of file AsciiInput.h.

◆ m_fileName

std::string AsciiInput::m_fileName
private

Input file name.

Definition at line 50 of file AsciiInput.h.

◆ m_lineBuffer

char AsciiInput::m_lineBuffer[MAX_LINE_LENGTH]
private

Character buffers used while parsing the input file.

Definition at line 59 of file AsciiInput.h.

◆ MAX_LINE_LENGTH

const int AsciiInput::MAX_LINE_LENGTH = 500
staticprivate

Size of the character buffers.

Definition at line 56 of file AsciiInput.h.


The documentation for this class was generated from the following files: