2016-05-14 102 views
0

我試圖逐行讀取文件並搜索每一行中的特定字符串,但我遇到了麻煩。正在讀取文件沒有任何問題,但是當我嘗試搜索每一行時,似乎沒有任何事情發生。測試字符串是否被找到的if語句會被跳過。任何想法發生了什麼?謝謝! 我到目前爲止有:從文件中讀取一行並搜索字符串(C++)

#include <fstream> 
#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string DECAF="WDCD71"; 
    string buffer; 
    fstream infile("bagging2.txt", ios::in); 

    if (infile.fail()) 
    { 
     cout<<"NOPE. NOT WORKING"<<endl; 
     exit (1); 
    } 

    while (getline(infile,buffer)) 
    { 
     if(buffer.find(DECAF)!=string::npos) 
     { 
      cout<<"FOUND IT!"<<endl; 
     } 
    } 
    return 0; 
} 

這裏是文本文件,我想讀的一個樣本:

套袋附表
「2016年2月8日」

URNEX
TABZ
Brew n Bake「MPN:13-TABZL12-120 Tabz Coffee Brewer Cleaning Tablets,120 Tablet Jar」1.00

WDCD71
LBW
啤酒ñ烘烤不含咖啡因的Spicewood的七十一(磅)4.00

OZW
榮耀豆咖啡公司無咖啡因Spicewood的七十一(12盎司袋)6.00

WRCBRA-PAN
LBW
「Stouthaus,LLC」巴西Fazenda潘塔諾黃色波旁酒/ Catuai(磅)8.00
Liberty Bar巴西Fazenda潘塔諾黃色波旁酒/卡圖伊(磅)12.00
個20.00
OZR
網站 - 訂單巴西莊園潘塔諾黃波旁/ Catuai(12盎司袋)1.00

OZW
全食品:林地巴西莊園潘塔諾黃波旁/ Catuai(12盎司袋)12.00
13.00

+0

輸入文件的格式是什麼? – ArchbishopOfBanterbury

+1

您是否試圖用調試器(或調試輸出)查看「緩衝區」中的內容? – cwschmidt

+0

這是一個帶有不同長度線條的.txt文件。有些行可能只有6個字符長,而其他行則可能會一直行進。我試圖用調試器查看'buffer',但沒有顯示出來。 – TylrRC

回答

0

嘗試調試器。同時檢查hexdump以確保bagging2.txt具有「WDCD71」

0

我不敢相信這花了我很長時間才弄明白,但經過大量搜索和試驗後,我發現我的問題是由於.txt文件的編碼方式。它被編碼爲一個UTF-16文件,正如我發現的那樣,它必須以二進制模式打開才能正確讀取。當我嘗試使用編碼爲Windows格式文本的文件時,該程序完美運行。謝謝你們!

相關問題