本文整理汇总了C++中Wtroka::find方法的典型用法代码示例。如果您正苦于以下问题:C++ Wtroka::find方法的具体用法?C++ Wtroka::find怎么用?C++ Wtroka::find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Wtroka
的用法示例。
在下文中一共展示了Wtroka::find方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetWSLemmaString
bool CSentence::GetWSLemmaString(Wtroka& sLemmas, const CWordSequence& ws, bool bLem) const
{
sLemmas = ws.GetCapitalizedLemma();
if (bLem)
return !sLemmas.empty();
if (sLemmas.empty())
for (int j = ws.FirstWord(); j <= ws.LastWord(); j++) {
if (!sLemmas.empty())
sLemmas += ' ';
sLemmas += getWord(j)->GetOriginalText();
}
static const Wtroka trim_chars = CharToWide(" \"\'");
TWtringBuf res = sLemmas;
while (!res.empty() && trim_chars.find(res[0]) != TWtringBuf::npos)
res.Skip(1);
while (!res.empty() && trim_chars.find(res.back()) != TWtringBuf::npos)
res.Chop(1);
if (sLemmas.size() != res.size())
sLemmas = ::ToWtring(res);
return true;
}
示例2: RightPartIsSurname
bool CWord::RightPartIsSurname(int& iH, THomonymGrammems& grammems, Wtroka& strLemma)
{
iH = HasMorphNounWithGrammems_i(TGramBitSet(gSurname));
if (iH != -1) {
CHomonym& h = GetRusHomonym(iH);
grammems = h.Grammems;
strLemma = h.GetLemma();
size_t ii = strLemma.find('-');
YASSERT(ii != Wtroka::npos);
strLemma = strLemma.substr(ii + 1);
return true;
}
//if this word is in morphology - do not try to predict
if (IsDictionary())
return false;
size_t ii = m_txt.find('-');
if (ii == Wtroka::npos)
return false;
Wtroka strRightPart = m_txt.substr(ii + 1);
TMorph::ToLower(strRightPart);
yvector<TSurnamePredictor::TPredictedSurname> out;
if (!TMorph::PredictSurname(strRightPart, out))
return false;
TGrammarBunch newForms;
NSpike::ToGrammarBunch(out[0].StemGrammar, out[0].FlexGrammars, newForms);
grammems.Reset(newForms);
strLemma = out[0].Lemma;
return true;
}
示例3: FindRightQuoteIfHas
// обычно функция возвращает clause->ToString(),
// если в клаузе есть открывающая кавычка, а нет закрывающей, тогда функция добавляет к результату
// все слова до закрывающей кавычки
Wtroka CQuotesFinder::FindRightQuoteIfHas(const CWordsPair& PeriodToPrint, int SentNo,
const CWordsPair& GroupToExclude, yvector<SFactAddress>& FioInQuotes)
{
FioInQuotes.clear();
CSentenceRusProcessor* pSentPrc = GetSentPrc(SentNo);
yset<int> QuoteWords;
Wtroka ClauseStr;
static const Wtroka COMMA = Wtroka::FromAscii(",");
for (int i = PeriodToPrint.FirstWord(); i <= PeriodToPrint.LastWord(); i++) {
const CWord& w = pSentPrc->m_Words.GetOriginalWord(i);
if (!GroupToExclude.Contains(i) &&
!(GroupToExclude.Contains(i - 1) && w.GetText() == COMMA) &&
!(GroupToExclude.Contains(i + 1) && w.GetText() == COMMA)) {
ClauseStr += w.GetOriginalText() + ' ';
QuoteWords.insert(i);
}
}
size_t index = ClauseStr.find('"');
if (index != Wtroka::npos && ClauseStr.rfind('"') == index) {
yset<int> AddQuoteWords;
Wtroka Add;
// если только одна кавычка, то пойдем искать вторую кавычку
int i;
for (i = PeriodToPrint.LastWord()+1; i < (int)pSentPrc->getWordsCount(); i++) {
const CWord& w = pSentPrc->m_Words.GetOriginalWord(i);
if (!GroupToExclude.Contains(i)) {
Add += w.GetOriginalText() + ' ';
AddQuoteWords.insert(i);
}
if (w.HasCloseQuote())
break;
}
if (i != (int)pSentPrc->getWordsCount()) {
ClauseStr += ' ';
ClauseStr += Add;
QuoteWords.insert(AddQuoteWords.begin(), AddQuoteWords.end());
}
}
AddFios(SentNo, QuoteWords, FioInQuotes);
return ClauseStr;
};