我有读取文件并检查其内容的功能。该文件包含一些二进制内容以及非字母字符,如()
、=
、divided by symbol
等。执行读取的函数是:
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;
}
我有这两个问题:
- 如果一行包含二进制字符,那么它不会读取完整的行,只是读取第一个单词(至少这是我通过在 VS2010 中打开文件所观察到的)。
- 当它遇到行首的字符时
(
,while循环终止并printf()
打印。
如果string::getline()
无法读取这些字符,那么解决方案是什么?谢谢你。
更新:文件中一些二进制数据的图像: