mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
106 lines
2.0 KiB
C++
106 lines
2.0 KiB
C++
#include <iostream>
|
||
#include <fstream>
|
||
#include <vector>
|
||
#include <string>
|
||
|
||
using namespace std;
|
||
|
||
#define OK 0
|
||
#define ERROR -1
|
||
#define INPUTNAME "input.txt"
|
||
|
||
// 查找
|
||
int search(vector<string>& v_data, string keyword) {
|
||
int i = 0;
|
||
|
||
// 遍历每个元素直到找到关键字
|
||
for (; i < v_data.size(); i++) {
|
||
|
||
// 比较关键字与每个词是否相等
|
||
if (0 == v_data[i].compare(keyword)){
|
||
|
||
// 相等则返回关键字的位序
|
||
return i;
|
||
}
|
||
}
|
||
return ERROR;
|
||
}
|
||
|
||
|
||
// 文件读取
|
||
int FileRead(vector<string>& v_data) {
|
||
|
||
ifstream f_in(INPUTNAME);
|
||
|
||
//判断读取失败
|
||
if (!f_in) {
|
||
cout << "文件读取失败!" << endl;
|
||
system("pause");
|
||
return ERROR;
|
||
}
|
||
|
||
string word;
|
||
|
||
// 文件逐个读取
|
||
while (!f_in.eof()) {
|
||
f_in >> word;
|
||
v_data.push_back(word);
|
||
}
|
||
|
||
// 关闭文件
|
||
f_in.close();
|
||
|
||
return OK;
|
||
}
|
||
|
||
// 界面
|
||
void Interface(string& keyword) {
|
||
cout << "-------------------- 文件查找 --------------------" << endl;
|
||
cout << "【说明】:本程序实现对文件内容的查找" << endl;
|
||
cout << "即从input.txt读入,查找关键字的首次出现位置" << endl;
|
||
cout << "--------------------------------------------------" << endl;
|
||
cout << "请输入关键字:" << endl;
|
||
cout << "--------------------------------------------------" << endl;
|
||
cin >> keyword;
|
||
cout << "--------------------------------------------------" << endl;
|
||
}
|
||
|
||
int main() {
|
||
|
||
vector<string> v_data;
|
||
|
||
// 文件读取
|
||
if (ERROR == FileRead(v_data))
|
||
return ERROR;
|
||
|
||
int index = -1;
|
||
string keyword;
|
||
|
||
// 界面
|
||
Interface(keyword);
|
||
|
||
// 合法性检测
|
||
if (keyword.empty()) {
|
||
cout << "请输入合法的关键字!" << endl;
|
||
system("pause");
|
||
return ERROR;
|
||
}
|
||
|
||
// 查找
|
||
index = search(v_data, keyword);
|
||
|
||
//未找到输出
|
||
if (ERROR == index) {
|
||
cout << "未找到此关键字!" << endl;
|
||
system("pause");
|
||
return ERROR;
|
||
}
|
||
|
||
//输出找到的关键字索引
|
||
cout << "此关键字位于第 " << index + 1 << " 个词的位置!" << endl;
|
||
|
||
system("pause");
|
||
|
||
return OK;
|
||
}
|