2011-12-01 2 views
0

input.in이라는 파일이 있습니다. 번호를 읽고 unsigned char 유형 변수에 저장해야합니다. 숫자를 읽고 변수의 내용을 화면에 인쇄하고 이것이 사실이라는 것을 알 수 있습니다 (인쇄 1). 그러나 if 문은 실패합니다. stdout에 False를 인쇄합니다. 왜 이런 일이 생길까요? 이 숫자를 unsigned char 변수에 어떻게 저장할 수 있습니까?unsigned char 형 변수의 입출력 실패

input.in 파일 : 나는 우분투에서 작동

[email protected]:~/Desktop$ cat input.in 
1 

. 를 sizeof (서명 숯불) = 1

#include <fstream> 
#include <iostream> 

using namespace std; 

int main(){ 

    unsigned char ucbuffer; 

    fstream in; 

    in.open("input.in",ios::binary | ios::in); 

    in.read((char*)&ucbuffer,1); 

    cout << ucbuffer << endl; 
    if (ucbuffer==1) cout << "True" << endl; 
    else cout << "False" << endl; 

     return 0; 
} 

답변

1

if (ucbuffer==1) 거짓이다. 값은 '1'이 아니고 1입니다. 의 숫자 값은 49입니다.

+0

in.read ((char *) & ucbuffer, 1); 왜 그것을 성격으로 취급 하는가? 또한 이진 모드로 파일을 열었습니다. – atakan

+0

파일을 열 때 어떤 모드에서 중요한지, 중요한 것은 무엇인지, 내부에는 문자 '1'이 있습니다. 그것이 당신이 읽고있는 것이며, 그것이 당신이 얻는 것입니다. 값을 1로 변환하려면 형식화 된 읽기를 수행해야합니다. – littleadv

관련 문제