在指定文本中查询指定字符串
来源:互联网 发布:辐射4 室内光源优化 编辑:程序博客网 时间:2024/06/08 03:26
/*2014/2/28 10:13
*功能:主要用于文本文件中字符串的查找
*作者:CxDtreeg
*/
#include<iostream>
#include"fstream"
#include"string"
#include"windows.h"
#include"vector"
#include"map"
#include"set"
#include"time.h"
#include"algorithm"
#include"sstream"
#include"utility"
using namespace std;
class TextQuery
{
public:
bool Import(ifstream &file,string &filename);
void MyFind(string &);
private:
vector<string> text;
};
bool TextQuery::Import(ifstream &file,string &filename)
{
file.open(filename.c_str());
if(!file)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x4);
cout<<"没有这个文件!"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
return false;
}
while(!file.eof())
{
string s;
getline(file,s);
text.push_back(s);
}
file.close();
return true;
}
void TextQuery::MyFind(string &QueryWord)
{
int total=0;
for(vector<string>::size_type i=0; i!=text.size(); ++i)
{
vector<string>::size_type wei=text[i].find(QueryWord);
if(wei!=string::npos)
{
++total;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x3);
cout<<"(lines "<<i+1<<") ";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
vector<string>::size_type tou=0;
while(wei!=string::npos)
{
cout<<text[i].substr(tou,wei-tou);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x6);
cout<<text[i].substr(wei,QueryWord.size());
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
tou=wei+QueryWord.size();
wei=text[i].find(QueryWord,tou);
if(wei==string::npos)
cout<<text[i].substr(tou)<<endl;
}
}
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x3);
cout<<"查询到"<<total<<"条结果。 ";
}
void run(char *argv[],int argc)
{
string filename,QueryWord;
TextQuery TeW;
clock_t start,stop;
ifstream file;
if(argc==1)
{
cout<<"请输入文件名:"<<endl;
cin>>filename;
cout<<"请输入查找的词:"<<endl;
cin>>QueryWord;
}
else if(argc==3)
{
filename=argv[1];
QueryWord=argv[2];
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x4);
cout<<"格式错误!正确格式:查询程序 文件名 要查询的字符串"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
return;
}
start=clock();
if(!TeW.Import(file,filename))
return ;
TeW.MyFind(QueryWord);
stop=clock();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x3);
cout<<"查询用时:"<<stop-start<<"ms"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
}
int main(int argc,char *argv[])
{
run(argv,argc);
return 0;
}
*功能:主要用于文本文件中字符串的查找
*作者:CxDtreeg
*/
#include<iostream>
#include"fstream"
#include"string"
#include"windows.h"
#include"vector"
#include"map"
#include"set"
#include"time.h"
#include"algorithm"
#include"sstream"
#include"utility"
using namespace std;
class TextQuery
{
public:
bool Import(ifstream &file,string &filename);
void MyFind(string &);
private:
vector<string> text;
};
bool TextQuery::Import(ifstream &file,string &filename)
{
file.open(filename.c_str());
if(!file)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x4);
cout<<"没有这个文件!"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
return false;
}
while(!file.eof())
{
string s;
getline(file,s);
text.push_back(s);
}
file.close();
return true;
}
void TextQuery::MyFind(string &QueryWord)
{
int total=0;
for(vector<string>::size_type i=0; i!=text.size(); ++i)
{
vector<string>::size_type wei=text[i].find(QueryWord);
if(wei!=string::npos)
{
++total;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x3);
cout<<"(lines "<<i+1<<") ";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
vector<string>::size_type tou=0;
while(wei!=string::npos)
{
cout<<text[i].substr(tou,wei-tou);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x6);
cout<<text[i].substr(wei,QueryWord.size());
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
tou=wei+QueryWord.size();
wei=text[i].find(QueryWord,tou);
if(wei==string::npos)
cout<<text[i].substr(tou)<<endl;
}
}
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x3);
cout<<"查询到"<<total<<"条结果。 ";
}
void run(char *argv[],int argc)
{
string filename,QueryWord;
TextQuery TeW;
clock_t start,stop;
ifstream file;
if(argc==1)
{
cout<<"请输入文件名:"<<endl;
cin>>filename;
cout<<"请输入查找的词:"<<endl;
cin>>QueryWord;
}
else if(argc==3)
{
filename=argv[1];
QueryWord=argv[2];
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x4);
cout<<"格式错误!正确格式:查询程序 文件名 要查询的字符串"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
return;
}
start=clock();
if(!TeW.Import(file,filename))
return ;
TeW.MyFind(QueryWord);
stop=clock();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|0x3);
cout<<"查询用时:"<<stop-start<<"ms"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x7);
}
int main(int argc,char *argv[])
{
run(argv,argc);
return 0;
}
0 0
- 在指定文本中查询指定字符串
- 在指定路径中查找指定字符串
- 指定关键词,在一段文本中搜索并在关键词前后进行插入自定义字符串
- (52)查找指定字符是否在指定字符串中
- [ubuntu] 在vim中查找指定字符串和指定文件
- 在指定文本文件中删除指定字符串C语言
- 在目录中查找指定的字符串
- 在目录中查找指定的字符串
- 在文件中删除指定的字符串
- Shell在文件中找指定字符串
- 在EXE文件中查找指定字符串
- 在字符串中删除指定字符
- 在字符串中查找指定字符(15)
- 在字符串中查找指定字符
- 在一个字符串中插入指定字符
- c++在字符中删除指定字符串
- 在字符串中删除指定字符
- 在指定区域内绘制文本
- 删除字符串中的指定字符
- 关于ArrayList的5道面试题
- JComponent 特性
- Android自定义标题栏
- 关于ArrayList的5道面试题
- 在指定文本中查询指定字符串
- 新的开始
- Windows下用户模式与内核模式
- jsp 动作元素 jsp:include jsp:forward
- 按钮 JButton 组件应用示例
- activity的声明周期
- 试探与回溯-差三角问题
- 今天天气恒冷
- IT外企面试回答技巧