c ++从文件中搜索事件并返回行号

时间:2015-05-03 23:29:52

标签: c++ string

我希望有人能指出我为这个计划指明正确的方向。主要问题是 searchstring 功能。该计划:

函数 searchString 有两个参数,即通过引用传入的文件对象和搜索字符串。

该函数一次读取一行并搜索搜索字符串的出现次数。每次找到搜索字符串时,它都会在输出中写出出现的行。此函数还返回搜索字符串出现的行数。

这是我的" info.txt" 文件。

你好,你叫什么名字?

我该如何帮助你?

欢迎来到他的域名!

修改

该计划现在有效。有谁知道如何搜索大写字母?

这是我到目前为止所做的:

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

using namespace std;

int searchString(fstream &, string);
int main()
{
    string filename;
    string look;
    fstream infile;
    cout<<"Enter file: ";
    cin>>filename;
    infile.open(filename.c_str(), ios::in);
    if(!infile)
    {
        cout<<filename<<" couldn't open."<<endl;
        return 1;
    }

    cout<<"What do you want to search in the text file? ";
    cin>>look;
    cout<<"Beginning to search for "<<look<<endl;
    cout<<look<<" was found in "<<searchString(infile, look)<<" lines."<<endl;

    infile.close();
    return 0;
    }

int searchString(fstream &infile, string see)
{
    string input;
    int count=0;
    int number=0;
    while(getline(infile,input))
    {
        number++;
        cout<<"Line "<<number<<": "<<input<<endl;
        if(input.find(see,0)!=string::npos)
        {
            cout<<"found "<<see<<" in line "<<number<<endl;
            count++;
        }
    else
    {
        cout<<see<<" is not found."<<endl;
    }
}
return count;
}

1 个答案:

答案 0 :(得分:0)

我猜您的问题是如何在字符串中找到子字符串,对吧?如果您的问题是如何阅读文件,请查看>Link<

对于从文件中读取的每一行,您只需执行此操作:

 String toFind = "example";
 String needle = " " + toFind + " ";
 if (s1.find(needle) != std::string::npos) {
  count++;
  cout << _line + ": Just found another line with the word" << endl;
}