从文件中读取一行并搜索其中的字符串(c ++)

时间:2016-05-14 21:08:30

标签: c++

我正在尝试逐行读取文件并在每行搜索特定字符串,但我遇到了麻烦。正在读取文件没有任何问题,但是当我尝试搜索每一行时,似乎没有任何事情发生。测试是否找到字符串的if语句被跳过。知道这里发生了什么吗?谢谢! 到目前为止我所拥有的:

#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清洁片,120片剂罐”1.00

WDCD71
   LBW
    Brew n Bake脱咖啡因香料七十一(磅)4.00

OZW
    Glory Bean咖啡公司脱咖啡因的Spicewood七十一(12oz袋)6.00

WRCBRA-PAN
   LBW
    “Stouthaus,LLC”巴西Fazenda Pantano Yellow Bourbon / Catuai(磅)8.00
    Liberty Bar巴西Fazenda Pantano Yellow Bourbon / Catuai(磅)12.00
            20.00
   OZR
    网站 - 订购巴西Fazenda Pantano黄波旁威士忌/ Catuai(12盎司袋装)1.00

OZW
    全食:Woodlands巴西Fazenda Pantano黄波旁威士忌/ Catuai(12盎司袋装)12.00
            13.00

2 个答案:

答案 0 :(得分:0)

尝试调试器。同时检查hexdump以确保bagging2.txt具有&#34; WDCD71&#34;

答案 1 :(得分:0)

我无法相信我花了很长时间才弄明白,但经过大量的搜索和实验,我发现我的问题是.txt文件编码方式的结果。它被编码为UTF-16文件,正如我发现的那样,必须以二进制模式打开才能正确读取。当我尝试使用已编码为Windows格式化文本的文件时,该程序运行良好。谢谢你们!