C++ 如何查找文件中特定单词周围的单词

C++ 如何查找文件中特定单词周围的单词,c++,C++,我的成绩有一个很大的档案。我想在此文件中查找特定单词周围的单词。 例如,如果我有这样一个文件: 我 是 去 家 他们 是 去 学校 山姆 是 去 到 午餐 如何在“前进”前后获取单词,并用C++将其保存在哈希中。 < P>你可以逐字读取文件,始终保持n个单词作为上下文。您可以将上下文存储在允许滚动上下文的 const int N = 10; std::deque<std::string> words_before, words_after; std::string current_w

我的成绩有一个很大的档案。我想在此文件中查找特定单词周围的单词。 例如,如果我有这样一个文件: 我 是 去 家 他们 是 去 学校 山姆 是 去 到 午餐


如何在“前进”前后获取单词,并用C++将其保存在哈希中。

< P>你可以逐字读取文件,始终保持n个单词作为上下文。您可以将上下文存储在允许滚动上下文的

const int N = 10;
std::deque<std::string> words_before, words_after;
std::string current_word, w;

// prefetch words before and after
for (int i = 0; i < N; ++i) {
    std::cin >> w;
    words_before.push_back(w);
}

std::cin >> current_word;

for (int i = 0; i < N - 1; ++i) {
    std::cin >> w;
    words_after.push_back(w);
}

// now process the words and keep reading
while (std::cin >> w) {
    words_after.push_back(w);
    // save current_word with the words around words_before, words_after
    words_before.pop_front();
    words_before.push_back(current_word);
    current_word = words_after.front();
    words_after.pop_front();
}
const int N=10;
std::在单词之前加上单词,在单词之后加上单词;
std::字符串当前_字,w;
//在单词前后预取单词
对于(int i=0;i>w;
词前推后(w);
}
标准::cin>>当前单词;
对于(int i=0;i>w;
后面的单词。推回(w);
}
//现在处理单词并继续阅读
而(标准::cin>>w){
后面的单词。推回(w);
//将当前单词保存在单词前、单词后
单词“在前面”pop_front();
单词前推后(当前单词);
当前单词=在.front()之后的单词;
单词在.pop_front()之后;
}

他可能想用一个无序的\u映射哈希表来存储值这是一个很好的答案,但从技术上讲,这对他的问题不起作用。因为两个“going”之间有不止一个单词,所以我必须提取特定单词前后10个单词的上下文word@MementoMori你的评论是合理的。我更新了我的答案。@user2162685然后我误解了你的问题,这种方法对你不起作用。@user2162685我更新了我的答案。这现在更冗长了,但我希望你明白了。