C++에서 파일을 읽을 때 EOF를 알리는 방법은 무엇입니까? 필자는 컴파일러 디자인의 일부로 직접 코딩 된 스캐너를 작성하여 파일을 읽어서 언어에 대한 토큰으로 분할합니다.프로그램에서 열리는 파일에서 EOF 신호를 보내는 방법
전체 프로그램을 읽고 주석을 제거하고 공백을 압축합니다. 그런 다음 결과 프로그램 char을 char로 최대 크기가 1024자인 버퍼에 넣습니다. 그래서 우리가 비울 때 우리는 완충액을 보충하거나 그렇지 않은 것을 보충 할 것입니다.
나는이 작성한 파일을 열려면 :
// Open source file.
source_file.open (filename);
if (source_file.fail()) {
// Failed to open source file.
cerr << "Can't open source file " << *filename << endl;
buffer_fatal_error();
나는
int i = 0;
// Iterate through the whole file
while(source_file.at(i) != EOF)
{
// If not a tab or newline add to buffer
if (source_file.at(i) != "\n" || source_file.at(i) != "\t")
{
bufferList.add(source_file.at(i));
}
i++;
}
이 신호 할 수있는 방법이있을 것 같은 while 루프를 사용하여 반복 걸려, 버퍼를 채우려면을 EOF는 제가 열어 놓은 파일에 대한 것입니까?
이것은 무엇을 해야할지에 대한 일반적인 개요입니다. 일단 비어 있거나 이중 버퍼링을 사용하면 버퍼를 다시 채우는 방법을 알아야합니다. 또한 #
으로 시작하는 설명을 제거하는 방법을 알아야합니다. 예 : # This is a comment
. 내 스캐너는 #
을보고 다음 줄 바꿈 문자를 얻을 때까지 모든 것을 제거합니다.
EOF는 파일 끝에 null 값을 찾고 있음을 의미합니다. –
버퍼에'std :: vector'을 사용하고 데이터를 버퍼로 읽어 들이기 위해'istream :: read()'를 사용해보십시오. –
@ThomasMatthews는'istream :: read()'가 공백을 제거 할 것인가? – GenericUser01