2016-04-30 104 views
-1
ifstream out("output.txt"); 
string search = "input1"; 
int count = 0; 

while (getline(out, temp)); 
{ 
    if (temp.find(search)) 
    { 
     count++; 
    } 
} 

cout << "Total times input1 is present in output.txt: " << count << endl; 

我正在计数“input1”在我的输出文件中出现的次数。 cout显示1,当它应该显示4.在whileif之间插入cout语句显示我的getline()未读取一行。从while(getline())不起作用的文件中读取行

在测试过程中,我在while循环之前使用了getline(),它把所有东西都收拾得很好。

Output.txt的:

这是input1.txt的第一行。
这是input2.txt的第一行。
这是input1.txt中的第二行。
这是input2.txt中的第二行。
这是input1.txt中的第三行。
这是input2.txt中的第三行。
这是input1.txt中的第四行。
这是input2.txt中的第四行。

经过一段时间的测试和搜索互联网,我仍然不知道我做错了什么。任何帮助,将不胜感激。

感谢

+0

一个可能的原因是[使用名称空间标准是不好的做法](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-practice)。谁知道你真的在调用哪个getline()... –

+0

该代码不会计算出现“input1”的行数。它计算不以'“input1”'开始的行数。 –

+2

为什么'while(getline(out,temp))'后面的分号存在? – MikeCAT

回答

1

while (getline(out, temp))后的分号越来越含if声明圈外的块和具有find功能只看到文件的最后一行。尝试删除它。

+0

哇,我很笨。谢谢 – ADC