需要从C ++中的特定位置开始字符串

时间:2013-04-07 20:04:55

标签: c++ string character getline

这是我的代码:

#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并以某种方式转换它

我的问题:如何将输入字转换为字符序列以获取字符串的起点

1 个答案:

答案 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
}       

很抱歉,如果这不对,但我很难理解你的问题。上面的代码非常简单,它比你自己编写的代码简单。