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);
} }

参考にしたいのですが、あまり参考になりません。

4

1 に答える 1

1

生の配列を宣言するには、配列のサイズをコンパイル時の定数にする必要があります。std::vector少なくともstd::array代わりにor を使用 してください。source埋めたい場合は、参照渡ししてください。

于 2013-06-03T20:20:01.020 に答える