我的文本文件中填充了与以下字符类似的字符:
¶§čç†8,ĄyŚ}¦PÜĎY®Všw†inmĘkÚhíU”*Q–Ö}W"ĄőK=Ć“7ßńĎ_0§ĄŚĆš‰ö¤˝†’?šŕý
î7ź®xż¶¸tÔuYÖa7Ź+6cE#U+:ç˛ů€°6%·˝Î÷Ľm‹¶ĺ¬‰,Y¤r$Ň“üDGhô‚J°ÜYŽäóa·7¶1Ľľ˝.—
bőľaŇ•Ďűż3«ű4°JT.ń¨kŢ&Ś6ÄmĆŕY0Ż/´~9.źÍéşď®ŁýçľURíOQS ›iJ±bĄB“˝¸&§řőUdüió^˛l˛
\›¨úlu+ĆŃSÔPÖDő±Qf6Ö\yÁ17$ŘĆMńŻß:g’×@ř–äy§_ĺąFsMWÓ‰5@Zݱ˝BvÓᯍ’;F¦jąÔî/ż/Ă
它们有近几百行。当你在记事本中打开一些图像时,它基本上是一样的混乱。
我的任务是在该文件中找到一些隐藏的单词,例如:" apple"," car"我得到的是这个:
ifstream buffer;
buffer.open("myFile.txt");
string str1;
while(getline(buffer, str1)){
if(str1.find("apple")!=std::string::npos)
counter++;
if(str1.find("car")!=std::string::npos)
counter++;
}
当我使用" normal"打开文件时,它工作正常字符,但只要有那些不寻常的字符,getline()就会出现加载整行的问题。
我将这一行添加到该周期中:
myOutputFile << str1;
要确保getline是否正确加载所有行,但在我的测试输出文件中只写了来自cca 200的+ -30行..我还尝试了get()函数,但结果相同。看起来有一些字符让/ getline无法处理并强制它停止加载下一个字符/行。
所以我的问题是:有什么方法可以强制getline来处理这种情况,或者通常是如何在这种奇怪的字符中找到特定的单词?
谢谢。
解决:
我已经以二进制模式打开该文件,现在正在运行。
buffer.open("myFile.txt", ios::binary);
非常感谢干杯和他。 - Alf
答案 0 :(得分:0)
在Windows中,Ctrl Z(ASCII 26)按惯例表示文本结尾。
为避免这种情况,请将文件打开为二进制文件。
或使用较低级别的二进制文件i / o。