9에서 13 사이의 부호없는 문자를 읽으려고 할 때 ifstream 매우 이상한 동작

Edgeseer

나는 이것을 이해하려고 벽에 머리를 부딪혔다. 온라인에서 아무것도 찾지 못했기 때문에 누군가가 나를 깨달을 수 있도록 여기에서 공유하고 있습니다.

#include <iostream>
#include <fstream>

int main(){
    std::ifstream in("bf", std::ios::binary);
    if (!in)
        return false;

    unsigned char byte;    
    while (!in.eof()){
        in >> byte;
        if (in.fail()){
            break;
        }
        std::cout<<(int)byte<<std::endl; 
    }
}

"bf"가이 파이썬 스크립트에 의해 생성 된 파일 인 위 코드를 실행합니다.

f = open('bf','wb')
arr = bytearray([i for i in range(20)])
f.write(arr)
f.close()

다음 출력을 생성합니다.

0
1
2
3
4
5
6
7
8
14
15
16
17
18
19

Ubuntu 18.04를 실행하고 있습니다. 누구든지 그 행동을 복제 할 수 있습니까? 무슨 일이 일어나고 있는지 아는 사람이 있습니까?

레미 르보

Python 스크립트는 내용이 바이트 0..19 인 바이너리 파일을 생성합니다. 그러면 C ++ 코드가 해당 파일을 이진 모드로 읽고 읽은 바이트의 숫자 값을 출력합니다. 문제는 당신이 기대하는 것을 읽지 않는다는 것입니다.

C ++ 코드에는 두 가지 문제가 있습니다.

  • 당신은 eof()잘못 사용하고 있습니다.

  • operator>>이 상황에서 원하는 것이 아닌 형식화 된 읽기를 수행합니다 . operator>>공백을 무시하고 9..13 바이트는 공백 문자를 나타내므로 출력되는 것을 볼 수 없습니다. 대신 steam의 방법 과 같이 형식화되지 않은 읽기 가 필요합니다.get()

이 시도:

#include <iostream>
#include <fstream>

int main(){
    std::ifstream in("bf", std::ios::binary);
    if (!in)
        return false;

    char byte;
    while (in.get(byte)){
        std::cout << (unsigned int)byte << std::endl;
    }
}

라이브 데모

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

부호없는 long long의 최대 자릿수를 얻으려고 할 때 이상한 동작

분류에서Dev

Deja dup : davfs에서 매니페스트를 읽으려고 할 때 권한이 거부되었습니다.

분류에서Dev

github 사이트에서 로컬 저장소를 사용할 때 매우 이상한 동작

분류에서Dev

'C'에서 NULL 문자를 확인할 때 이상한 동작

분류에서Dev

Timer를 사용할 때 SwiftUI에서 ObservedObject의 이상한 동작

분류에서Dev

viewDidLoad에서 addSubView를 호출 할 때 이상한 동작

분류에서Dev

Excel 파일을 읽으려고 할 때 [Errno13] 권한이 거부 된 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

C에서 동적으로 할당 된 2D 문자 배열을 채우는 동안 이상한 동작

분류에서Dev

crud를 업데이트하려고 할 때 이상한 동작

분류에서Dev

사용자 상호 작용없이 speechSynthesis를 실행할 수 있는지 여부에 대한 질문

분류에서Dev

배치 파일의 if 문 내에서 파이썬 함수를 호출 할 때 이상한 동작

분류에서Dev

Order By를 사용할 때 COALESCE에서 이상한 TSQL 동작

분류에서Dev

QGraphicsItem 위에있는 마우스를 따라야 할 때 QToolTip의 이상한 동작

분류에서Dev

매트릭스를 업데이트 할 때 이상한 동작

분류에서Dev

undef ()없이 STDOUT에서 파일로 파일 핸들 변수를 재 할당 할 때 Perl의 이상한 동작

분류에서Dev

GridView 셀에서 텍스트를 업데이트하려고 할 때 이상한 동작

분류에서Dev

반응 상태를 읽으려고 할 때 "null의 '데이터'속성을 읽을 수 없습니다."

분류에서Dev

jpa 프로젝트에서 dozer를 사용할 때 이상한 현상, 왜 지연로드 객체의 매핑 주석이 작동하지 않습니까?

분류에서Dev

ng-options에서 사용자 정의 정렬 필터를 사용할 때 이상한 정렬 동작

분류에서Dev

문법에서 공백과 탭을 감지하려고 할 때 이상한 동작

분류에서Dev

시트의 버튼을 사용하여 사용자 양식을 시작하려고 할 때 내 확인란이 작동하지 않고 기본 메뉴에서 사용자 양식을 시작할 때 작동하지 않는 이유는 무엇입니까?

분류에서Dev

앞에 0이있는 자릿수 합계를 계산할 때 C에서 이상한 동작

분류에서Dev

웹 페이지에서 데이터를 읽으려고 할 때 추적

분류에서Dev

Flash에서 rotationY를 애니메이션하는 동안 Child를 추가 할 때 한 번만 상호 작용하지 않으면 일부 자식이 공백으로 표시되는 이유는 무엇입니까?

분류에서Dev

C ++에서 파일을 읽으려고 할 때 내 파일에 이상한 문자 시퀀스가 추가됩니다.

분류에서Dev

파이썬에서 문자열을 분할 할 때 값 압축 해제의 이상한 동작

분류에서Dev

상수 (문자)에 대한 xor 연산이 대신 변수를 사용할 때 다르게 작동하는 이유

분류에서Dev

상수 (문자)에 대한 xor 연산이 대신 변수를 사용할 때 다르게 작동하는 이유

분류에서Dev

이상한 상호 작용 : TGUI가 편집 상자를 만들려고 할 때 ECL이 창에 오류를 발생시킵니다.

Related 관련 기사

  1. 1

    부호없는 long long의 최대 자릿수를 얻으려고 할 때 이상한 동작

  2. 2

    Deja dup : davfs에서 매니페스트를 읽으려고 할 때 권한이 거부되었습니다.

  3. 3

    github 사이트에서 로컬 저장소를 사용할 때 매우 이상한 동작

  4. 4

    'C'에서 NULL 문자를 확인할 때 이상한 동작

  5. 5

    Timer를 사용할 때 SwiftUI에서 ObservedObject의 이상한 동작

  6. 6

    viewDidLoad에서 addSubView를 호출 할 때 이상한 동작

  7. 7

    Excel 파일을 읽으려고 할 때 [Errno13] 권한이 거부 된 문제를 해결하는 방법은 무엇입니까?

  8. 8

    C에서 동적으로 할당 된 2D 문자 배열을 채우는 동안 이상한 동작

  9. 9

    crud를 업데이트하려고 할 때 이상한 동작

  10. 10

    사용자 상호 작용없이 speechSynthesis를 실행할 수 있는지 여부에 대한 질문

  11. 11

    배치 파일의 if 문 내에서 파이썬 함수를 호출 할 때 이상한 동작

  12. 12

    Order By를 사용할 때 COALESCE에서 이상한 TSQL 동작

  13. 13

    QGraphicsItem 위에있는 마우스를 따라야 할 때 QToolTip의 이상한 동작

  14. 14

    매트릭스를 업데이트 할 때 이상한 동작

  15. 15

    undef ()없이 STDOUT에서 파일로 파일 핸들 변수를 재 할당 할 때 Perl의 이상한 동작

  16. 16

    GridView 셀에서 텍스트를 업데이트하려고 할 때 이상한 동작

  17. 17

    반응 상태를 읽으려고 할 때 "null의 '데이터'속성을 읽을 수 없습니다."

  18. 18

    jpa 프로젝트에서 dozer를 사용할 때 이상한 현상, 왜 지연로드 객체의 매핑 주석이 작동하지 않습니까?

  19. 19

    ng-options에서 사용자 정의 정렬 필터를 사용할 때 이상한 정렬 동작

  20. 20

    문법에서 공백과 탭을 감지하려고 할 때 이상한 동작

  21. 21

    시트의 버튼을 사용하여 사용자 양식을 시작하려고 할 때 내 확인란이 작동하지 않고 기본 메뉴에서 사용자 양식을 시작할 때 작동하지 않는 이유는 무엇입니까?

  22. 22

    앞에 0이있는 자릿수 합계를 계산할 때 C에서 이상한 동작

  23. 23

    웹 페이지에서 데이터를 읽으려고 할 때 추적

  24. 24

    Flash에서 rotationY를 애니메이션하는 동안 Child를 추가 할 때 한 번만 상호 작용하지 않으면 일부 자식이 공백으로 표시되는 이유는 무엇입니까?

  25. 25

    C ++에서 파일을 읽으려고 할 때 내 파일에 이상한 문자 시퀀스가 추가됩니다.

  26. 26

    파이썬에서 문자열을 분할 할 때 값 압축 해제의 이상한 동작

  27. 27

    상수 (문자)에 대한 xor 연산이 대신 변수를 사용할 때 다르게 작동하는 이유

  28. 28

    상수 (문자)에 대한 xor 연산이 대신 변수를 사용할 때 다르게 작동하는 이유

  29. 29

    이상한 상호 작용 : TGUI가 편집 상자를 만들려고 할 때 ECL이 창에 오류를 발생시킵니다.

뜨겁다태그

보관