CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): illuza (큐티하니)
날 짜 (Date): 2002년 12월  1일 일요일 오전 01시 49분 16초
제 목(Title): [질문] C++에서 파일 스트림





  안녕하세요.

  파일 입출력에 대해 궁금한 점이 있어서 이렇게 올립니다.

  fruit라는 파일에 다음과 같은 내용이 쓰여져 있다고 하면,

  apple
  banana
  orange  
  kiwi

  이 파일을 아래와 같이 읽습니다.

  ifstream ff (fruit, ios_base::in);
  string sfruit;
  vector<string> vfruit;

  while (!ff.eof()){
ff >> sfruit;
vfruit.push_back(sfruit);
  }  

  그런데 vector안에 있는 string를 출력시키면 파일에 있는 내용과 달리 아래와 같이

나옵니다.

  apple
  banana
  orange
  kiwi
  kiwi

  즉 kiwi가 한번 더 나오는거죠. debug로 확인해보니까 파일의 kiwi를 읽고 파일스트

림이 아직 end of file이 아니라서 전에 있던 kiwi가 vector에 들어간거 같습니다.

  제 생각에는 kiwi까지 읽었으면 뒤에 아무 것도 없어서 end of file이라고 해야 될

거 같은데 그게 아니군요. 참고로 kiwi다음에 new line를 넣지는 않았습니다.

  이게 왜 이렇게 되는지 알수가 없군요.

  환경은 g++ 3.1.1이고 redhat 7.2, kernel 2.4.19입니다.

  그럼 미리 감사드립니다.




  
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.