基本上我想要实现的是我有一个文本文件,我必须找到一个特定的单词以及位置(行的位置和单词在该行的位置)。如何使用C ++的基本知识实现...我是一个新手,没有学习矢量等。谢谢你的帮助
fstream x;
x.open("file.txt);
while(getline(x,str)) {
//extract word from str and save in str1
if(reqWord == str1)
print("match found");
}`
答案 0 :(得分:1)
这是一种高级技巧,但我建议您尝试stringstream:
std::stringstream ss;
ss << str;
while(ss >> str1)
...
答案 1 :(得分:1)
您可以使用find
来搜索特定搜索字词。它将返回第一次出现的位置,否则npos
如果它不在当前行上。
请在下面找到一个工作示例:
已编辑 - 使用带有字边界的正则表达式
#include <iostream>
#include <fstream>
#include <regex>
int main() {
std::cout << "Please input the file path" << std::endl;
std::string path;
std::cin >> path;
std::ifstream file(path.c_str());
if (file.is_open()) {
std::string search;
std::cout << "Please input the search term" << std::endl;
std::cin >> search;
std::regex rx("\\b" + search + "\\b");
int line_no = 1;
for (std::string line; std::getline(file, line); ++line_no) {
std::smatch m;
if (std::regex_search(line, m, rx)) {
std::cout << "match 1: " << m.str() << '\n';
std::cout << "Word " << search << " found at line: " << line_no << " position: " << m.position() + 1
<< std::endl;
break;
}
}
} else {
std::cerr << "File could not be opened." << std::endl;
return 1;
}
return 0;
}