2013-04-07 61 views
-1

這裏開始串是我的代碼:需要從C++中的特定地點

#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關鍵字。

我的想法:應該有一種方法開始從單詞搜索,但我不知道如何。 你能幫我做一個額外的循環,因此它從例如單詞朱麗葉開始第二個循環。我不知道如何將cin轉換爲一系列字符。由於通常在文本文件中搜索字符串時,字符序列在'符號之間。

'Juliet' 

但我需要取詞串並以某種方式將其轉換

我的問題:我如何可以轉換輸入字的字符序列得到的出發點串

+1

你應該已經插入標題「我的問題」。 – antonijn 2013-04-07 20:06:19

+0

完成,對不起牆壁的文字 – 2013-04-07 20:09:32

+0

我不明白這個問題。 – john 2013-04-07 20:31:49

回答

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 
}  

對不起,如果這是不對的,但我努力瞭解你卡住了什麼。上面的代碼非常簡單,比您自己編寫的代碼更簡單。

+0

嗯對不起,在我的代碼中,我還包括了我計算單詞的部分以及另一種算法,用於從大寫字母到句點之間搜索額外的關鍵字。 謝謝你的回答,我會在一秒內測試它,雖然我不熟悉C++中的a_string – 2013-04-07 20:51:31

+0

什麼是'a_string'?不會出現在我的代碼中。 – john 2013-04-07 20:52:34

+0

對不起,您剛剛創建了一個名爲a_word的新字符串:) – 2013-04-07 20:53:22