⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filereader.cpp

📁 (1) 给定一段符合Pascal子集语法的语言
💻 CPP
字号:
#include "StdAfx.h"
#include ".\filereader.h"

FileReader::FileReader(void)
{
	file_end = 0;
	line_end = 1;
	read_position = 0; 
	line_position = 0; 
	strcpy(fileName, "phase.txt");
}

void FileReader::setBuffer(char *src)
{
	strcpy(buffer, src);
}

char * FileReader::getBuffer()
{
	return buffer;
}

void FileReader::setFileName(char *src)
{
	strcpy(this->fileName, src);
}
char FileReader::getFirstChar()
{
	if( this->IsLineEnd() )
		return '\0';
	char ch = this->buffer[read_position];
	this->read_position ++;
	if( buffer[read_position] == '\0' )
	{
		line_end = 1;
	}
	return ch;
}

int FileReader::getReadPosition()
{
	return read_position;
}

void FileReader::forwardReadPosition(int num)
{
	read_position += num;
	if( read_position >= BUFFER_SIZE )
		read_position = BUFFER_SIZE;
}

void FileReader::backwardReadPosition(int num)
{
	read_position -= num;
	if( read_position < 0 )
		read_position = 0;
}

void FileReader::getFirstString(char *dst)
{
	SkipBlank();

	int temp = read_position;
	while( (int)buffer[read_position] > 32)
	{
		read_position++;
	}
	int length = read_position - temp;
	strncpy(dst, (const char *)&buffer[temp], length);
	dst[length] = '\0';
	
	SkipBlank();
	if( buffer[read_position] == '\0' )
		line_end = 1;
}

void FileReader::SkipBlank()
{
	while( (int)buffer[read_position] <= 32 && buffer[read_position] != '\0')
	{
		read_position++;
	}
}

int FileReader::getLineNumber()
{
	return line_position + 1;//因为实际行号从1开始计算
}

int FileReader::IsEnd()
{
	return file_end;
}

int FileReader::IsLineEnd()
{
	return line_end;
}

void FileReader::CloseFile()
{
	fileSource.close();
}

int FileReader::OpenFile()
{
	fileSource.open(fileName);
	if( fileSource == NULL)
	{
		return 0;
	}
	return 1;
}

void FileReader::ReadLine()
{
	if(file_end == 1)
		return;
	if(fileSource != NULL)
	{
		fileSource.getline(buffer, BUFFER_SIZE);
		line_end = 0;
		line_position++;
		read_position = 0;
		if(fileSource.eof())
			file_end = 1;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -