这是我的代码:
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <iterator>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string word;
cout << "Insert a name to search for: ";
cin >> word;
ifstream file ("Names.txt");
string line;
getline(file, line, '.');
int i;
for (i = 0; i < line.length(); ++i) {
if ('A' <= line[i] && line[i] <= 'Z') break;
}
string keyword = line.substr(i);
int cnt = count( istream_iterator<string>(file), istream_iterator<string>(), word);
cout << word << " appears " << cnt << " times. It appears most with " << keyword << ". keyword" << endl;
return 0;
}
当下:我可以从包含数千个名字(每行一个)的文本文件中搜索某个名称,并查看该名称出现的次数。在每一行上还会出现一个带有名称的关键字,它以大写字母开头,以句点结束。
我的问题:我的代码几乎准备就绪,但问题是它从文件的开头搜索一个关键字,然后将其打印出来(因为我的代码还没有做任何其他事情)
我的目标:我希望它从找到SEARCH字词的行搜索关键字。例如,如果我搜索Juliet并且它出现一个关键字Girl,那么我希望它用该关键字打印名称而不是文件中的FIRST关键字。
我的想法:应该有办法从这个词开始搜索,但我不知道如何。 你能帮助我做一个额外的循环,所以它从例如Juliet开始第二次循环。我不知道如何将cin转换为一系列字符。由于通常在文本文件中搜索字符串时,字符序列在'符号之间。
'Juliet'
但我需要接受单词string并以某种方式转换它
我的问题:如何将输入字转换为字符序列以获取字符串的起点
答案 0 :(得分:0)
这样的东西?它不是一个“算法”,它只是一个简单的循环。
string word;
cout << "Insert a name to search for: ";
cin >> word;
ifstream file ("Names.txt");
string a_word;
while (file >> a_word && a_word != word)
{
}
if (file)
{
// found word now start second search.
}
else
{
// error, didn't find word
}
很抱歉,如果这不对,但我很难理解你的问题。上面的代码非常简单,它比你自己编写的代码简单。