2011-12-01 69 views
0

我有一個名爲input.in的文件。我需要讀取數字並將其存儲在一個無符號的char類型變量中。我讀入數字並在屏幕上打印變量的內容,我可以看到它是真實的(打印1)。但是,if語句失敗。它將False輸出到stdout。爲什麼會發生?我如何將這個數字存儲到一個無符號的char變量中?無符號字符類型變量的I/O失敗

的input.in文件:

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

我在Ubuntu的工作。 sizeof(unsigned char)= 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'1'的數值是49.

+0

但是用在.read((char *)&ucbuffer,1)中的語句;爲什麼把它當作一個角色來對待?我也以二進制模式打開文件。 – atakan

+0

打開文件的模式並不重要,重要的是裏面是什麼,裏面有字符'1'。這就是你正在閱讀的內容,這就是你所得到的。如果您希望將其轉換爲值1,則需要執行格式化讀取。 – littleadv

相關問題