在文件中查找具有特定字符串的行数

时间:2017-02-20 11:46:50

标签: c++ string file find getline

我希望我的程序返回有特定字符串的行数。 整行应该是这个字符串。

我不知道为什么它总是返回整个文件的长度。

我的代码:

#include <iostream>
#include <string>
#include <fstream>
#include <limits>
#include <windows.h>

using namespace std;


int main () {
int x;
x=0;
string filename, inputfilename, line;
ifstream inputfile;

while(!inputfile.is_open()) {
    cout << "Input filename: ";
    getline (cin, inputfilename);
    inputfile.open(inputfilename.c_str(),ios::in | ios::binary);
}

//string obj = "[I.LOVE.COOKIES]"; //Was like this
string obj = "[I.LOVE.COOKIES]\r"; //Adding \r solved the problem
while(getline(inputfile, line))
{
    if(line==obj)
    {
        return x;
    }
    else
    {
        x++;
    }

}
return 0;
}

1 个答案:

答案 0 :(得分:0)

打开文件时,您可能需要省略ios::binary作为参数。

问题是在Windows上,一行以两个字符\r\n结尾。如果以二进制模式打开文件,std::getline将读取一行并包含回车\r。这意味着您的字符串比较失败,因为字符串"[I.LOVE.COOKIES]"不以\r结尾。