我有文本文件:C++函數getline()不能正確加載的所有字符充滿了類似這些字符
¶§čç†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Ó‰[email protected]ݱ˝BvÓᯍ’;F¦jąÔî/ż/Ă
而且有將近數百人行。當你在記事本中打開一些圖像時,它會遇到同樣的問題。
我的任務是找到該文件,例如裏面的一些隱藏的話:「蘋果」,「汽車」等我該怎麼是這樣的:
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++;
}
它,當我打開文件,將「正常工作正常「字符,但只要有那些不尋常的字符,getline()在加載整行時就會出現問題。
我加入這一行成周期:
myOutputFile << str1;
要確保,如果函數getline加載所有線路正常,但在我的測試輸出文件只寫+ -30線從CCA 200 ..我已經也試過get()函數,但結果是一樣的。它似乎有一些字符get/getline不能處理,並強制它停止加載下一個字符/行。
所以我的問題是:有沒有辦法如何強制getline處理這種情況,或者通常以任何方式如何找到這種奇怪的字符之間的特定詞?
謝謝。
解決:
我在二進制模式打開該文件,現在它的工作。
buffer.open("myFile.txt", ios::binary);
非常感謝乾杯和hth。 - Alf
我懷疑你遇到嵌入式空值。 – 2015-02-09 00:54:33
你確定「apple」不能在一行中出現兩次嗎? – Beta 2015-02-09 01:08:18
@貝塔它可以但確切的數字對我來說現在並不重要。如果能夠找到至少一個字,我會很感激。現在我在0. – 2015-02-09 10:09:59