как разделить предложение [я] (строка) на слова (строка) в C ++ - PullRequest
0 голосов
/ 06 января 2012

У меня проблема.В моем проекте я беру предложение построчно из файла набора данных, в котором по одной фразе в каждой строке.Затем я должен разделить предложения на слова.Но я не мог найти это, как я могу это сделать.

Это коды класса, которые будут читать из набора данных:

class Input{
...
public:
string *word;
string *sentence;
Couple *couple;    // int x , int y  order of sentence and word
int number;
int line;
...
void readInput(string input);
}

Это коды метода чтения:

void Input::readInput(string input)
{
cout << "Reading the " << input <<endl;

ifstream infile;
infile.open(input.c_str());

    if(!infile.is_open()){
    cerr << "Unable to open file: " << input << endl << endl;
    exit(-1);
}

for(int i=0; i<line ; i++){
    getline(infile, sentence[i]);
    //infile >> sentence[i];
}

for(int j=0;j<line ;j++){
// I want to separate sentences into words
}    

infile.close();
cout << "Finished Reading the " << input <<endl;

}

Ответы [ 3 ]

4 голосов
/ 06 января 2012
for(int j=0; j<line; ++j)
{
    std::istringstream iss(sentence[j]);
    for (std::string w; iss >> w; )
    {
        word[number] = w;
        ++number;
    }
}

Вам нужно будет что-то сделать с пунктуацией, если вы не хотите, чтобы слова были прикреплены к вашим словам. Я думаю, достаточно просто.

1 голос
/ 06 января 2012

Если бы я был в методе, где у вас есть:

for(int j=0;j<line ;j++){
    // I want to separate sentences into words
}

Я бы использовал регулярное выражение для сопоставления всех слов в sentence[j] boost regex - библиотека, которую я использовал с большим успехом в прошлом.

0 голосов
/ 06 января 2012

Вы можете попытаться перебрать std :: string, представляющий каждую строку, ища маркеры конца слова, используя std :: string :: find_first_of ().Параметр find_first_of будет набором символов, используемых для разделения слов в вашем текстовом файле (может быть пробел, точка и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...