Source code

Revision control

Copy as Markdown

Other Tools

// Common/StdInStream.cpp↩
#include "StdAfx.h"
#include <tchar.h>↩
#include "StdInStream.h"
#include "StringConvert.h"
#include "UTFConvert.h"
// #define kEOFMessage "Unexpected end of input stream"↩
// #define kReadErrorMessage "Error reading input stream"↩
// #define kIllegalCharMessage "Illegal zero character in input stream"↩
#define kFileOpenMode TEXT("r")↩
extern int g_CodePage;↩
CStdInStream g_StdIn(stdin);↩
bool CStdInStream::Open(LPCTSTR fileName) throw()↩
{↩
Close();↩
_stream = _tfopen(fileName, kFileOpenMode);↩
_streamIsOpen = (_stream != 0);↩
return _streamIsOpen;↩
}↩
bool CStdInStream::Close() throw()↩
{↩
if (!_streamIsOpen)↩
return true;↩
_streamIsOpen = (fclose(_stream) != 0);↩
return !_streamIsOpen;↩
}↩
bool CStdInStream::ScanAStringUntilNewLine(AString &s)↩
{↩
s.Empty();↩
for (;;)↩
{↩
int intChar = GetChar();↩
if (intChar == EOF)↩
return true;↩
char c = (char)intChar;↩
if (c == 0)↩
return false;↩
if (c == '\n')↩
return true;↩
s += c;↩
}↩
}↩
bool CStdInStream::ScanUStringUntilNewLine(UString &dest)↩
{↩
dest.Empty();↩
AString s;↩
bool res = ScanAStringUntilNewLine(s);↩
int codePage = g_CodePage;↩
if (codePage == -1)↩
codePage = CP_OEMCP;↩
if (codePage == CP_UTF8)↩
ConvertUTF8ToUnicode(s, dest);↩
else
MultiByteToUnicodeString2(dest, s, (UINT)codePage);↩
return res;↩
}↩
/*↩
bool CStdInStream::ReadToString(AString &resultString)↩
{↩
resultString.Empty();↩
for (;;)↩
{↩
int intChar = GetChar();↩
if (intChar == EOF)↩
return !Error();↩
char c = (char)intChar;↩
if (c == 0)↩
return false;↩
resultString += c;↩
}↩
}↩
*/
int CStdInStream::GetChar()↩
{↩
return fgetc(_stream); // getc() doesn't work in BeOS?↩
}↩