1 // Common/StdInStream.cpp
6 #include "StdInStream.h"
9 // "was declared deprecated" disabling
10 #pragma warning(disable : 4996 )
13 static const char kIllegalChar = '\0';
14 static const char kNewLineChar = '\n';
16 static const char *kEOFMessage = "Unexpected end of input stream";
17 static const char *kReadErrorMessage ="Error reading input stream";
18 static const char *kIllegalCharMessage = "Illegal character in input stream";
20 static LPCTSTR kFileOpenMode = TEXT("r");
22 CStdInStream g_StdIn(stdin);
24 bool CStdInStream::Open(LPCTSTR fileName)
27 _stream = _tfopen(fileName, kFileOpenMode);
28 _streamIsOpen = (_stream != 0);
32 bool CStdInStream::Close()
36 _streamIsOpen = (fclose(_stream) != 0);
37 return !_streamIsOpen;
40 CStdInStream::~CStdInStream()
45 AString CStdInStream::ScanStringUntilNewLine()
50 int intChar = GetChar();
53 char c = char(intChar);
54 if (c == kIllegalChar)
55 throw kIllegalCharMessage;
63 void CStdInStream::ReadToString(AString &resultString)
67 while((c = GetChar()) != EOF)
68 resultString += char(c);
71 bool CStdInStream::Eof()
73 return (feof(_stream) != 0);
76 int CStdInStream::GetChar()
78 int c = fgetc(_stream); // getc() doesn't work in BeOS?
79 if(c == EOF && !Eof())
80 throw kReadErrorMessage;