2017-03-27 2 views
0

파일에서 모든 라인을 fstream 변수와 함께 라인별로 읽고 싶습니다. 예를 들어fstream 변수가 텍스트 파일의 모든 라인을 얻습니다.

:

#include <fstream> 

fstream fsFile; 

fsfile.open("file.txt", ios::in); 

while (fsFile.getline(szLine, LINE_SIZE + 1)) 
{ 
    cout << szLine << endl; 
} 

내가 모든 라인을 읽고 싶어하지만 난 더 큰 LINE_SIZE보다 fsFile.bad() 반환 사실 줄을 있고 난 그것을 얻을.
그러나 갑자기 falsefsFile.getline(szLine, LINE_SIZE + 1)으로 어떻게 반환되는지 알고 싶습니다.
함수의 반환 값은 무엇입니까?
null인데 왜 그렇게 생각합니까 null?
그리고 null이 아닌 경우 무엇을 반환합니까?
지원해 주셔서 감사합니다.

답변

2

getlinestd::string 버전 사용 : 일반적으로, 그래서 당신은 읽기가 실패하면 그것 (그 상태를 확인할 수 있습니다 bool로 변환되는 스트림에 대한 참조를 반환

std::ifstream fsFile("file.txt"); 
std::string line; 
while(std::getline(fsFile, line)) { 
    std::cout << line << '\n'; 
} 

getline (두 버전 모두) 우리 때문에 파일 끝에 도달).

std::string을 사용하면 메모리 버퍼에 대한 걱정을 완전히하지 않기 때문에이 버전의 getline이 좋습니다. 자신을 생성 할 필요가 없으며 그것을 파괴해야한다는 것을 기억하십시오. 라인의 크기를 걱정할 필요가 없습니다. using namespace std;endl :


또한, 종종 나쁜 관행으로 간주 무엇의 사용을 재고하시기 바랍니다.

관련 문제