2013-06-03 41 views
0

所以我試圖完成這個程序的一部分,我必須從Stdin讀取一個文本文件並將其添加到「單詞列表」wl中。我知道如何從文本文件中讀取,但是我不知道如何去添加「單詞」到列表中,如果這是有道理的。所以這就是我得到的:閱讀文本文件,然後添加字符列表?

string getWord(){ 
    string word; 
    while (cin >> word){ 
     getline(cin, word); 
    } 
    return word; 
} 

void fillWordList(string source[], int &sourceLength){ 
    ifstream in.file; 
    sourceLength = 50; 
    source[sourceLength]; ///this is the part I'm having trouble on 

來源是一個數組,確定從文本中讀取多少單詞,長度是在屏幕上打印的數量。

關於我應該從什麼開始的任何想法?

編輯:這是我寫的實施方案:

#include <iostream> 
#include <string> 
#include <vector> 
#include "ngrams.h" 
void help(char * cmd) { 
    cout << "Usage: " << cmd << " [OPTIONS] < INPUTFILE" << endl; 
    cout << "Options:" << endl; 
    cout << " --seed RANDOMSEED" << endl; 
    cout << " --ngram NGRAMCOUNT" << endl; 
    cout << " --out OUTPUTWORDCOUNT" << endl; 
} 
string source[250000]; 
vector<string> ngram; 
int main(int argc, char* argv[]) { 
    int n, outputN, sl; 
    n = 3; 
    outputN = 100; 
    for (int i = 0; i < argc; i++) { 
    if (string(argv[i]) == "--seed") { 
     srand(atoi(argv[i+1])); 
    } else if (string(argv[i]) == "--ngram") { 
     n = 1 + atoi(argv[i+1]); 
    } else if (string(argv[i]) == "--out") { 
     outputN = atoi(argv[i+1]); 
    } else if (string(argv[i]) == "--help") { 
     help(argv[0]); 
return 0; } 
    } 
    fillWordList(source,sl); 
    cout << sl << " words found." << endl; 
    cout << "First word: " << source[0] << endl; 
    cout << "Last word: " << source[sl-1] << endl; 
    for (int i = 0; i < n; i++) { 
    ngram.push_back(source[i]); 
    } 
    cout << "Initial ngram: "; 
    put(ngram); 
    cout << endl; 
    for (int i = 0; i < outputN; i++) { 
    if (i % 10 == 0) { 
    cout << endl; 
} 
//put(ngram); 
//cout << endl; 
cout << ngram[0] << " "; 
findAndShift(ngram, source, sl); 
} } 

我應該以此爲參考,但它這麼想的幫助我太多。

+1

你的兩個函數之間的關係還不清楚。我不太清楚你想用source和sourceLength做什麼。 –

+0

@Sceptical Jule我對他們如何處理也感到困惑。下面是我應該做的事情的頭文字說明: '''''''''''''''''''''''''''''''''getWord() //從標準輸入中返回一個空格分隔的單詞 void fillWordList(string source [],int&sourceLength); //從標準文件中讀取文本文件並全部添加 //空格分隔的單詞到單詞列表wl' – user2421178

回答

1

聲明原始數組需要數組大小爲編譯時常量。改爲使用std::vector或至少std::array。如果您想填寫,請通過source作爲參考。