화면에 txt 파일의 모든 문자를 인쇄하는 간단한 코드입니다 : 내가있는 test.txt의 끝을 판단하는 "test.eof()"를 사용하는 경우 나, 코드에서 언급 한 바와 같이전체 istream을 올바르게 읽는 방법?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
int **i;
int j,k;
char a;
ifstream test("test.txt", ios::binary);
while((a=test.get())!=-1)//if I use "while(!test.eof())" here, how to avoid the output of the last character(-1) to std::cout, or any ostream objects?
{
putchar(a);//also change this to putchar(test.get());
}
getchar();
}
, 나는 출력의 끝에 항상 여분의 공백을 얻을 것이다. 어떻게 피하는가?
예 나는() 얻을 알고는 int를 반환하고, EOF는 -1로 동일합니다. 하지만 istream :: eof()를 사용할 때 파일을 올바르게 표시하는 방법을 알고 싶습니다. –
@LLawler 알고 계시다면,. 왜 코드가 int를 사용하지 않았습니까? 나는 eof()를 사용하는 예제를 게시했다. eof()를 반복하는 것은 나쁜 생각이다. 읽기 실패 후 스트림 상태를 진단하기위한 것이다. –
확인. 나는 너를 지금 이해한다. 하지만 int를 사용한다고 주장하는 이유가 궁금합니다. char 형에는 int 치를 할당 할 수가있어 -1과 비교합니다. –