我有讀取文件&的函數檢查其內容。 該文件包含了一些二進制內容以及非字母字符,如()
,=
,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個問題:
- 如果一行包含二進制字符,那麼它不會讀完整行,只需讀取第一個字(至少這就是我通過在VS2010中打開文件所觀察到的)。
- 當它遇到字符
(
作爲行的開始時,while循環終止&將打印printf()
。
如果string::getline()
無法讀取這些字符,那麼解決方案是什麼? 謝謝。
UPDATE:一些文件中的二進制數據的圖像:
您刪除我添加到'if' ... – 2013-03-11 13:51:38
對不起括號,但我沒有得到您。 – 2013-03-11 13:54:12
文本輸入流不應在括號字符上失敗。如果你確實需要一個二進制流,使用'ifstream(filename,std :: ios :: binary)'。 – Pete 2013-03-11 13:56:03