2012-03-09 29 views
0

讀取數值我是比較新的C++編程,我已經在這一切的打了我的第一次重大碰壁之一..最好的方法,從文件

我試圖找出如何閱讀來自記事本上的通用「.txt」文件的值/字符。通過比較,我想確定是否讀取整行,但我似乎無法讀取單個一位或兩位數字,我使用{'buffername'.getline(variable ,size)}但是當我嘗試將'size'改爲一個特定的數字時,它給了我一個比較錯誤,指出它無效切換到'int'或'char'(取決於我如何聲明變量)。

任何幫助表示讚賞。 感謝

+2

如果你不透露你的程序,preferrably齊全,您正在使用的示例數據,只有具有水晶球的嚮導可以幫助您。 – Kaz 2012-03-09 05:09:10

回答

0
int length = 2; 
    char * buffer;  
    ifstream is; 
    is.open ("test.txt", ios::binary);  

    // allocate memory: 
    buffer = new char [length]; 

    // read 2 char 
    is.read (buffer,length); 

    //Compare the character and decide  

    delete[] buffer; 
    return 0; 
+0

好吧,這看起來像是我嘗試使用的代碼塊的一個很好的解決方案。我會試一試,看看這個程序頭痛是否會最終消失。感謝所有的幫助。 – 2012-03-09 22:36:24

0

你要使用ifstream來獲取值(ref 1)。

像下面這樣的東西應該工作。這裏我使用std :: string類型的字,但是可以用其他類型替換它來讀取它們(即:int,double等)。

std::ifstream f("somefile.txt"); 
std::string word; 
std::string line; 

if(f >> word){ 
    if(<the comparison>){ 
     line = f.getline(); 
    } 
} 

Here's an extended example of how to use the ifstream

0

首先,由於性能原因這是一個壞主意,在一次讀取1個字節。

我建議這種替代:

你會過得更好閱讀整行的,然後用字符數組。

char variable[1000]; 

從文件讀入你的行變成變量。

if (variable[1]=='c') { printf("Byte 2 (remember 0 offset) is compared for the letter c";} 

得到一個兩位數#

number=((variable[3]-48)*10)+(variable[4]-48); 

您必須減去48,因爲在ASCII數字0是48