1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
// Common/StdInStream.cpp
#include "StdAfx.h"
#ifdef _WIN32
#include <tchar.h>
#endif
#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"
CStdInStream g_StdIn(stdin);
/*
#define kFileOpenMode TEXT("r")
bool CStdInStream::Open(LPCTSTR fileName) throw()
{
Close();
_stream =
#ifdef _WIN32
_tfopen
#else
fopen
#endif
(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 (;;)
{
const int intChar = GetChar();
if (intChar == EOF)
return true;
const char c = (char)intChar;
if (c == 0)
return false;
if (c == '\n')
return true;
s.Add_Char(c);
}
}
bool CStdInStream::ScanUStringUntilNewLine(UString &dest)
{
dest.Empty();
AString s;
const bool res = ScanAStringUntilNewLine(s);
int codePage = CodePage;
if (codePage == -1)
codePage = CP_OEMCP;
if ((unsigned)codePage == CP_UTF8)
ConvertUTF8ToUnicode(s, dest);
else
MultiByteToUnicodeString2(dest, s, (UINT)(unsigned)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?
}
|