指定文件中查找一个字符串并显示该字符串出现的次数

来源:互联网 发布:c语言status 未声明 编辑:程序博客网 时间:2024/05/21 04:26

以下转自:http://bbs.csdn.net/topics/110120343

#include "iostream"#include <string>#include <fstream>using namespace std;int CountSubString(string const& str, string const& substr){   int nCount = 0;   string::size_type substrSize = substr.size();   string::size_type idxSub = str.find(substr, 0);   //int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置   while (idxSub!=string::npos) {      ++nCount;      ++idxSub;      idxSub = str.find(substr, idxSub);         }   return nCount;}int CountStrInFile(string const& filename,  string const& str){   ifstream inf(filename.c_str());   // c_str():生成一个const char*指针,指向以空字符终止的数组。   //ifstream filename("d:\\test.txt");//以输入方式打开文件   if (!inf) {      cout<<"Error: can't open the file: "<<filename<<endl;      exit(1);   }   string infStr;   int nSubStrFound = 0;   while (inf && !inf.eof()){      inf>>infStr;      nSubStrFound += CountSubString(infStr, str);         }       return nSubStrFound;}int main(){   string filename("d:\\test.txt");   // the file name to search string   string strToCount("abc");                // the string to count      int nCount = CountStrInFile(filename, strToCount);   cout<<nCount<<" times of \""<<strToCount<<"\" found in file: "<<filename<<endl;     strToCount = "aaa";   nCount = CountStrInFile(filename, strToCount);   cout<<nCount<<" times of \""<<strToCount<<"\" found in file: "<<filename<<endl;     system("pause");   return 0;}



//测试文件test.txt内容:
abc abc abc lpte yejylyyryryljryjrabc
logyy[yuuujabcabc
aaaaaa aabeee aaa

//测试输出:
6 times of "abc" found in file: d:\temp\test.txt
5 times of "aaa" found in file: d:\temp\test.txt

0 0
原创粉丝点击