c ++使用getline()解析文本文件

时间:2014-09-16 16:58:19

标签: c++ parsing text readability flesch-kincaid

我正在准备一个简单的程序,该程序应该获取一个文件,然后检查某些字符的实例(空格,一些句子分隔符等)。

在下面的代码中,我打开了文件。我能够使用strtok让分隔符工作,但后来我无法正确计算它们。当我尝试使用它来计算其他东西(音节,空格)时,它不能很好地工作。换句话说,对我想要做的事情不利(除非有办法)。

我被困住了。我知道我必须使用getline()来解析文件,但我似乎无法实现它。我只是需要朝着正确的方向努力。

#include <iostream>
#include <cstring>
#include <fstream>

using namespace std;

int main(int argc, char* argv[]) {
    int space_count = 0;
    int sentence_count = 0;
    int word_count = 0;
    int syllable_count = 0;
    int enter_count = 0;
    string syll = "aeiou";

    char delim[] = " ";
    char* token;
    char const* const fileName = argv[1];

    // check we have at least 2 command line
    // arguments
    // that argv[1] is valid
    if (2 > argc) {
        cout << "Correct usage <file> path>" << endl;
        return 0;
    }

    ifstream infile;
    const int INPUT_SIZE = 10000;
    char input[INPUT_SIZE];

    infile.open(argv[1]);
    if (!infile.is_open()) {
        cout << "could not open file!" << endl;
        return 0;
    }

    while (infile.getline(input, INPUT_SIZE)) {
        // check input to see if it matches given char or a string
        //
        //    if (input[INPUT_SIZE] = 'a'){
        space_count++;
    }

    // word count by using spaces set in delim
    token = strtok(input, delim);
    cout << token << endl;

    word_count++;

    // file print
    while ((token = strtok(NULL, delim)) != NULL) {
        cout << token << endl;
        word_count++;
    }
}

cout << word_count << endl;

return 0;
}

0 个答案:

没有答案