我正在尝试逐行读取文件并在每行搜索特定字符串,但我遇到了麻烦。正在读取文件没有任何问题,但是当我尝试搜索每一行时,似乎没有任何事情发生。测试是否找到字符串的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
答案 0 :(得分:0)
尝试调试器。同时检查hexdump以确保bagging2.txt具有&#34; WDCD71&#34;
答案 1 :(得分:0)
我无法相信我花了很长时间才弄明白,但经过大量的搜索和实验,我发现我的问题是.txt文件编码方式的结果。它被编码为UTF-16文件,正如我发现的那样,必须以二进制模式打开才能正确读取。当我尝试使用已编码为Windows格式化文本的文件时,该程序运行良好。谢谢你们!