2013-03-11 110 views
0

我有讀取文件&的函數檢查其內容。 該文件包含了一些二進制內容以及非字母字符,如()=divided by symbol等 這確實閱讀功能是:在C++中無法讀取包含括號字符的二進制文件

int FindMyWord(const char *fileName) 
{ 
    ifstream myFile (fileName); 
    if(!myFile) 
     return false; 
    string wordSearch = "MyWord"; 
    string line; 
    int result = 0; 
    while(getline(myFile, line)) 
    { 
     if(line.find(wordSearch) != string::npos) 
      result++; 
    } 
    //if(!myFile.eof() || !myFile) 
    if(!myFile) 
     printf("Problem Reading the File: %s\n", (const char *)fileName); 

    myFile.close(); 
    return result; 
} 

我有以下2個問題:

  1. 如果一行包含二進制字符,那麼它不會讀完整行,只需讀取第一個字(至少這就是我通過在VS2010中打開文件所觀察到的)。
  2. 當它遇到字符(作爲行的開始時,while循環終止&將打印printf()

如果string::getline()無法讀取這些字符,那麼解決方案是什麼? 謝謝。

UPDATE:一些文件中的二進制數據的圖像:

enter image description here

+0

您刪除我添加到'if' ... – 2013-03-11 13:51:38

+0

對不起括號,但我沒有得到您。 – 2013-03-11 13:54:12

+0

文本輸入流不應在括號字符上失敗。如果你確實需要一個二進制流,使用'ifstream(filename,std :: ios :: binary)'。 – Pete 2013-03-11 13:56:03

回答

2

文本輸入流不應該在括號字符上失敗。

如果你確實需要一個二進制流,使用ifstream的(文件名,標準::內部監督辦公室::二進制)