Выведите вектор строк до и после слова, НЕ используя регулярное выражение. Составление согласованной программы - PullRequest
0 голосов
/ 05 мая 2011

Я работаю над программой согласования и в настоящее время работаю над функцией getContext. Мне нужно, чтобы эта функция работала как регулярное выражение, но я хочу, чтобы она возвращала вектор строк до и после указанного слова. Я не знаю, правильно ли то, о чем я думаю, но это все, о чем я могу думать.

Так вот, что я имел в виду: он берет слово и создает два вектора и возвращает по одному слева и справа от указанного слова.

Спасибо. : D

Я не думал, что мне нужно будет включать весь файл кода, но если кому-то это понадобится, я тоже могу его поднять.

/* Get context for input parameter word (case-insensitive comparison)
* Return a dynamically allocated vector of strings, each string
* consisting of contextSize number of words before word and contextSize
* number of words after word, with word in the middle (set off with "<<"
* before the word and ">>" after the word). ContextSize defaults to 5.
* It is user's responsibility to delete the vector.
*/
vector<string>*Concordance::getContext(string word, int contextSize = 5){
    vector<string> before;
    vector<string> after;


    return 0;
}

1 Ответ

0 голосов
/ 05 мая 2011

Если вы просто ищете std::string в std::vector<std::string>, вы можете использовать std::find

bool IsWordInArrayOfWords(const std::vector<string>& arrayOfWords, const std::string& word)
{
    auto found = std::find(arrayOfWords.cbegin(), arrayOfWords.cend(), word);
    return found != arrayOfWords.cend();
}

Если вы ищете способ поиска частичного совпаденияСлово и лучшее совпадение, основанное на процентах или каком-либо другом более сложном контексте и регулярном выражении, не вариант, тогда я думаю, что нам нужно гораздо лучшее описание того, что вы пытаетесь выполнить, и какова реальная проблема, которую вы хотите решить.

...