바이너리 모드에서 istream이 열렸는지 확인하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/224234

  •  03-07-2019
  •  | 
  •  

문제

나는 stringstream, ifstream 또는 사용자 정의 스트림 유형 일 수있는 IStream을 사용하고 있으며, IFStream의 경우 이진 모드에서 열리지 않았는지 알아야합니다 (따라서 예외를 던질 수 있음). 다음 방법을 시도했습니다.

if ((_is.flags() & ios::binary) == 0)
    throw exception(...)

그러나 예외는 결코 던져지지 않습니다. _is.flags ()가 0x201을 반환하고 iOS :: 바이너리는 0x20이기 때문에이 경우 테스트가 실패합니다. 스트림이 텍스트 모드에서 열렸는지 알아낼 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

플래그 () 반환 iOS_Base :: fmtflags 이진은 깃발을 서식하는 반면, 이진은 an입니다 iOS_Base :: OpenMode 깃발. 스트림이 이미 열린 후에는 이것을 찾을 수있는 방법이 있는지 확실하지 않습니다. 나는 StreamBuf 클래스의 가상 회원이 도움이 될 수 있다고 생각했지만 실제로는없는 것 같습니다.

다른 팁

아니, 이것을 테스트 할 방법이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top