亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? textfile.h

?? A Model-View-Controller Framework that integrates with the MFC Doc/View architecture.
?? H
字號:
// textfile.h: interface for the textfile class.
//
//////////////////////////////////////////////////////////////////////

#ifndef PEKSPRODUCTIONS_TEXTFILE
#define PEKSPRODUCTIONS_TEXTFILE



/*
	CTextFileDocument let you write and read text files with 
	different encodings (ASCII, UTF-8, Unicode 16 little/big 
	endian is supported). When you work with ASCII-files
	CTextFileDocument will help you convert strings to/from
	different code-pages.

	Let me now if you find something strange or just gets
	a clever idea...

	Get the latest version at 
	http://www.codeproject.com/file/textfiledocument.asp

	Version 1.22 - 21 May 2005
	 ! Reading a line before reading everything could add an
	   extra line break.
	 ! A member variable wasn't always initialized, could cause
	   problems when reading single lines.
	 ! A smarter/easier algorithm is used when reading single lines.

	Version 1.21 - 10 Apr 2005
	 ! Fix by sammyc: If it was not possible to open a file in techlevel 1,
	   IsOpen returned a bad result.

	Version 1.20 - 15 Jan 2005
	 ! Fixed some problems when converting multi-byte string to Unicode,
	   and vice versa.
	 + Improved conversion routines. It's now possible to define
	   which code-page to use.
	 + It's now possible to set which character to use when it's
	   not possible to convert an Unicode character to an multi-byte character.
	 + It's now possible to see if data was lost during conversion.
	 + Better support for other platforms, it's no longer necessary to use
	   MFC in Windows.
	 ! Reading very small files (1 byte) failed.

	Version 1.13 - 26 Dec 2004
	 ! Fixes by drinktea:
	 ! If a text file begun with an empty line, the file
	   wasn't read correctly (first empty line was ignored).
	 ! Fixes in CharToWstring and WcharToString.

	Version 1.12 - 17 Oct 2004
	 + Minor memory leak when open file failed, fixed.

	Version 1.11 - 28 Aug 2004
	 ! Calling WriteEndl() when writing an ASCII file could make
	   the file incorrectly written. Fixed.
	 + ASCII files is written faster.

	Version 1.10 - 13 Aug 2004
	Sorry about the quick update.
	 + Improved performance (much faster now, but code is more complicated :-/).
	 + Buffer is used when writing files.
	 + Buffer is used in non-mfc compilers

	Version 1.0	- 12 Aug 2004
	Initial version.

	PEK
  */


/*

If you are creating a console project that doesn't support
MFC in Visual Studio, you will probably need to define
techlevel to 0:
#define PEK_TX_TECHLEVEL 0

In other cases it usually not necessary to define which "tech-level" 
to use, the code below should do this for you. However, 
if you need to this is the difference:

#define PEK_TX_TECHLEVEL 0
You should use this if you running on a none-Windows 
platform. This uses fstream internally to read and 
write files. If you want to change codepage you should 
call setlocal.

#define PEK_TX_TECHLEVEL 1
Use this on Windows if you don't use MFC. This calls 
Windows API directly to read and write files. If 
something couldn't be read/written a CTextFileException 
is thrown. Unicode in filenames are supported. 
Codepages are supported.

#define PEK_TX_TECHLEVEL 2
Use this when you are using MFC. This uses CFile 
internally to read and write files. If data can't be 
read/written, CFile will throw an exception. Codepages 
are supported. Unicode in filenames are supported.
CString is supported.

*/

#ifndef PEK_TX_TECHLEVEL

//Autodetect which "tech level" to use
#ifdef _MFC_VER
	#define	PEK_TX_TECHLEVEL 2
#else
#ifdef _WIN32
	#define	PEK_TX_TECHLEVEL 1
#else
	#define	PEK_TX_TECHLEVEL 0
#endif
#endif
#endif


#if PEK_TX_TECHLEVEL > 0
	/*
		In windows it's possible to use Unicode in filenames,
		in unix it's not possible (afaik). FILENAMECHAR is the 
		charactertype.
	  */
	#include <afx.h>

	#ifndef _UNICODE
		typedef char FILENAMECHAR;
	#else
		typedef wchar_t FILENAMECHAR;
	#endif
#else
	#include <fstream>
	typedef char FILENAMECHAR;
#endif

#include <string>
using namespace std;

class CTextFileBase
{
public:
	enum TEXTENCODING { ASCII, UNI16_BE, UNI16_LE, UTF_8 };

	CTextFileBase();
	~CTextFileBase();

	//Is the file open?
	int IsOpen();
	
	//Close the file
	virtual void Close();

	//Return the encoding of the file (ASCII, UNI16_BE, UNI16_LE or UTF_8);
	TEXTENCODING GetEncoding() const;

	//Set which character that should be used when converting
	//Unicode->multi byte and an unknown character is found ('?' is default)
	void SetUnknownChar(const char unknown);

	//Returns true if data was lost
	//(happens when converting Unicode->multi byte string and an unmappable
	//characters is found).
	bool IsDataLost() const;
	
	//Reset the data lost flag
	void ResetDataLostFlag();

	#if PEK_TX_TECHLEVEL > 0

	/* Note!
	   The codepage is only used when converting from multibyte
	   to Unicode or vice versa. It is not used when reading
	   ANSI-files in none-Unicode strings, or reading
	   Unicode-files in Unicode strings.

	   This means that if you want to read a ANSI-textfile
	   (with some code page) to an non-Unicode string you
	   must do the conversion yourself. But this is easy :-).
	   Read the file with the codepage to a wstring, then use
	   ConvertCharToWstring to convert the wstring to a
	   string.

	*/
	//Set codepage to use when working with none-Unicode strings
	void SetCodePage(const UINT codepage);

	//Get codepage to use when working with none-Unicode strings
	UINT GetCodePage() const;

	//Convert char* to wstring
	static void ConvertCharToWstring(const char* from, wstring &to,	UINT codepage=CP_ACP);

	//Convert wchar_t* to string
	static void ConvertWcharToString(const wchar_t* from, string &to, UINT codepage=CP_ACP, bool* datalost=NULL, char unknownchar=0);


	#else

	//Convert char* to wstring
	static void ConvertCharToWstring(const char* from, wstring &to);

	//Convert wchar_t* to string
	static void ConvertWcharToString(const wchar_t* from, string &to, bool* datalost=NULL, char unknownchar='a');

	#endif


protected:
	//Convert char* to wstring
	void CharToWstring(const char* from, wstring &to) const;
	//Convert wchar_t* to string
	void WcharToString(const wchar_t* from, string &to);
		
	//The enocoding of the file
	TEXTENCODING m_encoding;

	//Buffersize
	#define BUFFSIZE 1024


#if PEK_TX_TECHLEVEL == 0
	//Use fstream
	fstream m_file;
#elif PEK_TX_TECHLEVEL == 1
	HANDLE m_hFile;
#else
	//In windows we are using CFile
	CFile* m_file;
	bool m_closeAndDeleteFile;
#endif
	
	//These controls the buffer for reading/writing

	//True if end of file
	bool m_endoffile;
	//Readingbuffer
	char m_buf[BUFFSIZE];
	//Bufferposition
	int m_buffpos;
	//Size of buffer
	int m_buffsize;

	//Character used when converting Unicode->multi byte and an unknown character was found
	char m_unknownChar;

	//Is true if data was lost when converting Unicode->multi-byte
	bool m_datalost;

#if PEK_TX_TECHLEVEL > 0
	UINT m_codepage;
#endif


	

};

class CTextFileWrite : public CTextFileBase
{

public:
	CTextFileWrite(const FILENAMECHAR* filename, TEXTENCODING type=ASCII);
#if PEK_TX_TECHLEVEL == 2
	CTextFileWrite(CFile* file, TEXTENCODING type=ASCII);
#endif
	~CTextFileWrite();

	//Write routines
	void Write(const char* text);
	void Write(const wchar_t* text);
	void Write(const string& text);
	void Write(const wstring& text);
	
	CTextFileWrite& operator << (const char c);
	CTextFileWrite& operator << (const char* text);
	CTextFileWrite& operator << (const string& text);

	CTextFileWrite& operator << (const wchar_t wc);
	CTextFileWrite& operator << (const wchar_t* text);
	CTextFileWrite& operator << (const wstring& text);
	
	//Write new line (two characters, 13 and 10)
	void WriteEndl();

	//Close the file
	virtual void Close();

private:
	//Write and empty buffer
	void Flush();

	//Write a single one wchar_t, convert first
	void WriteWchar(const wchar_t ch);

	//Write one byte
	void WriteByte(const unsigned char byte);

	//Write a c-string in ASCII-format
	void WriteAsciiString(const char* s);

	//Write byte order mark
	void WriteBOM();
};


class CTextFileRead : public CTextFileBase
{

public:
	CTextFileRead(const FILENAMECHAR* filename);
#if PEK_TX_TECHLEVEL == 2
	CTextFileRead(CFile* file);
#endif

	//Returns false if end-of-file was reached
	//(line will not be changed). If returns true,
	//it means that last line ended with a line break.
	bool ReadLine(string& line);
	bool ReadLine(wstring& line);

	//Returns everything from current position.
	bool Read(string& all, const string newline="\r\n");
	bool Read(wstring& all, const wstring newline=L"\r\n");

#if PEK_TX_TECHLEVEL == 2
	bool ReadLine(CString& line);
	bool Read(CString& all, const CString newline=_T("\r\n"));
#endif

	//End of file?
	bool Eof() const;

private:
	//Guess the number of characters in the file
	int GuessCharacterCount();

	//Read line to wstring
	bool ReadWcharLine(wstring& line);

	//Read line to string
	bool ReadCharLine(string& line);

	//Reset the filepointer to start
	void ResetFilePointer();

	//Read one wchar_t
	void ReadWchar(wchar_t& ch);

	//Read one byte
	void ReadByte(unsigned char& ch);

	//Detect encoding
	void ReadBOM();

	//Use extra buffer. Sometimes we read one character to much, save it.
	bool m_useExtraBuffer;

	//Used to read see if the first line in file is to read 
	//(so we know how to handle \n\r)
	bool m_firstLine;

	//Extra buffer. It's ok to share the memory
	union
	{
		char m_extraBuffer_char;
		wchar_t m_extraBuffer_wchar;
	};

};


#if PEK_TX_TECHLEVEL == 1

//This is only used in Windows mode (no MFC)
//An exception is thrown will data couldn't be read or written
class CTextFileException
{
public:
	CTextFileException(DWORD err)
	{
		m_errorCode = err;
	}

	//Value returned by GetLastError()
	DWORD m_errorCode;
};

#endif

#endif //PEKSPRODUCTIONS_TEXTFILE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠桃花综合| 制服丝袜亚洲播放| 裸体一区二区三区| 国产精品网站在线播放| 51精品视频一区二区三区| 成人影视亚洲图片在线| 青青国产91久久久久久| 亚洲免费看黄网站| 国产日本亚洲高清| 欧美成人女星排名| 欧美日韩免费高清一区色橹橹 | 色成人在线视频| 精品影院一区二区久久久| 亚洲美女屁股眼交| 国产蜜臀97一区二区三区| 日韩午夜精品视频| 欧美三级在线看| 99视频在线观看一区三区| 国产一区二区三区免费| 日韩 欧美一区二区三区| 亚洲欧美日韩在线| 国产精品久久久久aaaa樱花| 精品福利av导航| 欧美精品高清视频| 欧美视频在线观看一区| 99精品欧美一区二区三区综合在线| 日本美女一区二区三区| 午夜精品久久久久久久久| 亚洲欧美一区二区久久| 国产精品短视频| 国产欧美日韩视频一区二区| 久久新电视剧免费观看| 久久久精品人体av艺术| 欧美成人精品3d动漫h| 在线不卡a资源高清| 欧美日韩中文字幕精品| 欧美优质美女网站| 欧美中文字幕亚洲一区二区va在线 | 自拍偷拍欧美精品| 中文字幕亚洲区| 国产精品二三区| 亚洲欧洲精品一区二区精品久久久| 久久―日本道色综合久久| 2023国产一二三区日本精品2022| 日韩免费观看高清完整版| 日韩亚洲欧美成人一区| 日韩一区二区精品葵司在线| 欧美一区二区女人| 日韩一区二区在线观看视频| 欧美一级视频精品观看| 精品人在线二区三区| 日韩欧美国产一区在线观看| 日韩免费电影一区| 2欧美一区二区三区在线观看视频| 欧美一区二区女人| 2020日本不卡一区二区视频| 国产视频亚洲色图| 国产精品不卡在线| 一卡二卡三卡日韩欧美| 日韩激情视频在线观看| 看片的网站亚洲| 国产精品性做久久久久久| 成人av免费在线观看| 91国产成人在线| 在线播放91灌醉迷j高跟美女| 日韩一级高清毛片| 国产调教视频一区| 亚洲精品精品亚洲| 免费观看在线综合| 国产99精品视频| 91成人国产精品| 欧美一区二区三区在线| 欧美精品一区二区在线观看| 亚洲欧洲日本在线| 青青草国产精品97视觉盛宴| 国产伦理精品不卡| 欧洲一区二区av| 日韩欧美色综合网站| 中文字幕av一区二区三区| 亚洲午夜激情网页| 紧缚捆绑精品一区二区| 97精品久久久午夜一区二区三区| 色久综合一二码| 2023国产精华国产精品| 一区二区三区蜜桃| 久草这里只有精品视频| 91亚洲精品久久久蜜桃| 日韩欧美美女一区二区三区| 亚洲欧洲国产日韩| 麻豆91在线播放| 91九色02白丝porn| 久久这里只精品最新地址| 亚洲欧美电影院| 国产老妇另类xxxxx| 91麻豆免费视频| 久久免费看少妇高潮| 亚洲第一搞黄网站| 粉嫩一区二区三区性色av| 欧美人与禽zozo性伦| 中文字幕av在线一区二区三区| 天天色天天爱天天射综合| 国产a级毛片一区| 欧美一区二视频| 亚洲色图另类专区| 国产精品一区不卡| 日韩视频在线永久播放| 亚洲美女免费视频| 成人性视频网站| 精品少妇一区二区三区日产乱码 | 国产成人午夜片在线观看高清观看 | 国产成人av在线影院| 56国语精品自产拍在线观看| 亚洲欧洲av一区二区三区久久| 欧美aaa在线| 欧美四级电影网| 综合欧美一区二区三区| 国产成人在线电影| 日韩一区二区三区av| 午夜激情综合网| 色综合久久综合网| 国产精品美女久久久久av爽李琼| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美三级日韩三级国产三级| 国产精品久久影院| 国产成人精品网址| 精品久久久久久久久久久久久久久久久| 亚洲一区二区三区影院| 91色|porny| 亚洲色图欧洲色图婷婷| av动漫一区二区| 国产精品护士白丝一区av| 高清不卡在线观看| 中文字幕欧美日韩一区| 国产一区不卡在线| 久久婷婷久久一区二区三区| 久久国产精品露脸对白| 日韩视频国产视频| 久久精品久久精品| 日韩欧美一区二区不卡| 久久av中文字幕片| 精品福利一区二区三区免费视频| 香港成人在线视频| 9191精品国产综合久久久久久 | 亚洲电影一级片| 精品视频一区二区不卡| 午夜不卡av免费| 欧美老女人第四色| 久久精品99国产精品日本| 日韩三级免费观看| 精品一区二区三区免费毛片爱| 日韩精品一区二区三区在线播放 | 91偷拍与自偷拍精品| 亚洲女同女同女同女同女同69| 色欧美乱欧美15图片| 亚洲自拍都市欧美小说| 欧美日本一区二区| 精品一二线国产| 国产人成亚洲第一网站在线播放 | 亚洲男帅同性gay1069| 欧美视频日韩视频在线观看| 奇米四色…亚洲| 久久久亚洲午夜电影| 不卡av在线网| 亚洲一区二区av在线| 6080午夜不卡| 国产suv精品一区二区6| 亚洲少妇30p| 这里只有精品99re| 国产不卡视频在线播放| 亚洲乱码国产乱码精品精的特点| 欧美色综合影院| 国产一区二区三区日韩| 亚洲人成伊人成综合网小说| 7777精品伊人久久久大香线蕉| 国产在线一区二区| 亚洲欧美激情插| 精品国产3级a| 91亚洲国产成人精品一区二区三| 亚洲高清三级视频| 欧美精品一区二区三| 94-欧美-setu| 久久99国产精品麻豆| 亚洲美女视频在线| 欧美va亚洲va国产综合| 91丝袜国产在线播放| 久久99精品久久久久久国产越南 | 欧美日韩国产电影| 成人综合婷婷国产精品久久免费| 洋洋成人永久网站入口| 久久九九99视频| 在线播放91灌醉迷j高跟美女| 成人精品一区二区三区四区| 日韩电影在线一区| 中文字幕一区在线观看| 日韩欧美一区在线观看| 成人av在线播放网站| 激情文学综合网| 偷窥国产亚洲免费视频| 亚洲欧洲日韩女同| 久久中文娱乐网|