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);
} }
我應該以此爲參考,但它這麼想的幫助我太多。
你的兩個函數之間的關係還不清楚。我不太清楚你想用source和sourceLength做什麼。 –
@Sceptical Jule我對他們如何處理也感到困惑。下面是我應該做的事情的頭文字說明: '''''''''''''''''''''''''''''''''getWord() //從標準輸入中返回一個空格分隔的單詞 void fillWordList(string source [],int&sourceLength); //從標準文件中讀取文本文件並全部添加 //空格分隔的單詞到單詞列表wl' – user2421178