ifstream :: getline 호출이 delimeter를 찾지 못하면 failbit를 설정하지만 버퍼를 지우거나 버퍼를 그대로두고 그냥 실패 비트를 설정하여 알고있다? here 가입일ifstream getline이 delim을 찾지 못함
답변
이 입력 스트림의 다양한 상태에 대한 혼란을 것 같다 (DyP의 주석을 참조하십시오) :
C++ 표준, 테이블 (124)
badbit
은 입력 또는 출력 시퀀스에서 무결성 손실 (파일에서 복구 할 수없는 읽기 오류 등)을 나타냅니다.eofbit
은 입력 작업이 입력 시퀀스의 끝에 도달했음을 나타냅니다.failbit
은 입력 작업이 예상 된 문자를 읽지 못했음을 나타내거나 은 출력 작업이 원하는 문자를 생성하지 못했음을 나타냅니다. 이다
는 failbit
이 설정되어있는 경우 구분 기호 (저장 종료 \0
에 대한 -1
를) 찾을 수없는 basic_istream::getline(char_type* s, std::streamsize count, char_type delim)
추출물 count-1
문자. 스트림이 bad
임을 나타내지는 않지만 getline
이 구분 기호를 찾지 못했음을 나타냅니다. C++ 표준에 basic_istream::getline
의
설명 : [istream.unformatted]/18
- 효과 : [...] [= 제조, 입력 및 에러 검사를위한] 센트리 객체를 구축 한 후, 문자를 추출하여 첫 번째 요소가
s
으로 지정된 배열의 연속적인 위치에 문자를 저장합니다. (이 경우에 함수를 호출setstate(eofbit)
) 입력 시퀀스 발생
- 파일 끝 다음 중 하나가 발생할 때까지문자를 추출하여 저장된
traits::eq(c, delim)
[사용 가능한 다음 입력 문자c
(입력 문자가 추출되었지만 저장되지 않은 경우)에 대한 구분 기호가 있습니다.n
이 1보다 작거나n - 1
문자가 저장됩니다 (이 경우 함수는setstate(failbit)
을 호출 함). [...]- 이러한 조건은 표시된 순서대로 테스트합니다.
- 함수가 어떤 문자를 추출하지 않는 경우, 그것은
n
가 0보다 큰 경우setstate(failbit)
가 [...] 어떤 경우- 가, 그 다음의 다음의 연속적인 위치에 널 문자를 [...] 저장 호출 정렬.
[중점 및 누락 광산]
:
내부의 함수 (true로 설정 noskipws)와 센 객체를 구성하는 제 하여 입력 시퀀스를 액세스한다. 그런 다음 ( 이 좋은 경우) 연결된 스트림 버퍼 객체 에서 문자를 마치 sbumpc 또는 sgetc라는 멤버 함수를 호출하는 것처럼 추출하고 마지막으로 은 반환하기 전에 보조 객체를 파괴합니다.
문제가 발생할 때까지 버퍼가 채워진 것 같습니다. (그들은 는는 혼란, 그래서 당연히와)
나는이 행동에 대한 더 많은 정보를 얻으려는 노력을하고 있지만 이해할 수는 없다. – Djon
나는 그렇게 생각하지 않는다 ?? 보초 개체는 스트림이 양호한 지 여부를 확인하는 것입니다. 'getline'은 파일이 끝날 때까지 **를 추출합니다 **; [cppreference] (http://en.cppreference.com/w/cpp/io/basic_istream/getline) 또는 Standard [istream.unformatted]/18, "문자는 다음 중 하나가 발생할 때까지 추출되어 저장됩니다." – dyp
오 그럼, 해명 해줘서 고마워. – Djon
- 1. NSTimer가 선택자를 찾지 못함
- 2. sscanf가 0을 찾지 못함
- 3. Eclipse가 javax.swing을 찾지 못함
- 4. 찾지 못함 ListBlob() CloudBlobContainer에서
- 5. 메인 클래스를로드하거나 찾지 못함
- 6. Intellisense가 작업을 찾지 못함
- 7. CMake가 부스트를 찾지 못함
- 8. 라우터가 컨트롤러를 찾지 못함
- 9. 호버 cufton 찾지 못함
- 10. Eclipse가 main_Activity를 찾지 못함
- 11. AC_CHECK_FUNCS가 shm_open을 찾지 못함
- 12. Array 배열을 찾지 못함
- 13. 블루투스가 장치를 찾지 못함
- 14. CakePHP CakeSession에서 찾지 못함
- 15. 사용자 현재 위치 찾지 못함
- 16. Python이 CSS 파일을 찾지 못함
- 17. Hibernate가 영구 집합을 찾지 못함
- 18. Tomcat이 기존 클래스를 찾지 못함
- 19. 안드로이드에서 SDL이 글꼴을 찾지 못함
- 20. cron 작업이 wmctrl을 찾지 못함
- 21. 앱이 크롬 케스트를 찾지 못함
- 22. Unity가 DLL 참조를 찾지 못함
- 23. const char *지도에서 찾지 못함
- 24. DependencyProperty가 ResourceDictionary에서 항목을 찾지 못함
- 25. Java가 올바른 경로를 찾지 못함
- 26. ADT가 com.google.com을 갑자기 찾지 못함
- 27. Codeigniter ajax가 404를 찾지 못함
- 28. Java FileReader가 파일을 찾지 못함
- 29. 입력 요소가 값을 찾지 못함
- 30. C# XPath 무엇이든 찾지 못함
그것은 'failbit' 설정되기 전에 추출 무엇 containting 버퍼 그대로 남긴다. – jrok