本文整理汇总了C++中CFSWString::Left方法的典型用法代码示例。如果您正苦于以下问题:C++ CFSWString::Left方法的具体用法?C++ CFSWString::Left怎么用?C++ CFSWString::Left使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFSWString
的用法示例。
在下文中一共展示了CFSWString::Left方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: do_phrases
INTPTR do_phrases(utterance_struct &u) {
phrase_struct p;
CFSWString res;
p.phone_c = 0;
p.syl_c = 0;
p.word_c = 0;
for (INTPTR i = 0; i < u.s.GetLength(); i++) {
CFSWString c = u.s.GetAt(i);
CFSWString pc = res.GetAt(res.GetLength() - 1);
CFSWString nc = u.s.GetAt(i + 1);
CFSWString nnc = u.s.GetAt(i + 2);
if ((is_comma(c) || is_colon(c) || is_semicolon(c)) && is_space(nc) && is_char(nnc)) {
res.Trim();
if (res.GetLength() > 0) {
push_ph_res(u, p, res);
}
} else
if (is_bbracket(c)) {
res.Trim();
if (res.GetLength() > 0) {
push_ph_res(u, p, res);
}
p.s = L"sulgudes";
u.phr_vector.AddItem(p);
} else
if (is_ebracket(c)) {
res.Trim();
if (res.GetLength() > 0) {
push_ph_res(u, p, res);
}
} else
if (is_space(c)) { // komatud sidesõnad
CFSWString tempm = u.s.Mid(i + 1, -1);
res.Trim();
if (is_conju(tempm.Left(tempm.Find(sp))) && res.GetLength() > 0) {
push_ph_res(u, p, res);
} else
res += c;
} else
if (is_bhyphen(c)) {
res.Trim();
if (res.GetLength() > 0 && ((is_char(pc) && is_space(nc)) || (is_space(nc) && is_char(nnc)) || (is_space(pc) && is_char(nc)))) {
push_ph_res(u, p, res);
} else
res += c;
} else
res += c;
}
if (res.GetLength() > 0) {
// if (is_ending(res.GetAt(res.GetLength() - 1))) {
// res.Delete(res.GetLength() - 1, 1);
// }
push_ph_res(u, p, res);
}
return u.phr_vector.GetSize();
}
示例2: MultiReplace
void CSuggestor::MultiReplace(const CFSWString &szWord, INTPTR ipStartPos)
{
if (ipStartPos>0) CheckAndAdd(szWord);
INTPTR ipLength=szWord.GetLength();
for (; ipStartPos<ipLength; ipStartPos++){
for (INTPTR ip=0; ip<(INTPTR)(sizeof(ChangeStringsMultiple)/sizeof(__CChangeStrings)); ip++){
if (szWord.ContainsAt(ipStartPos, ChangeStringsMultiple[ip].m_lpszFrom)){
MultiReplace(szWord.Left(ipStartPos)+ChangeStringsMultiple[ip].m_lpszTo+szWord.Mid(ipStartPos+FSStrLen(ChangeStringsMultiple[ip].m_lpszFrom)), ipStartPos+FSStrLen(ChangeStringsMultiple[ip].m_lpszTo));
}
}
}
}
示例3: Suggest
int CSuggestor::Suggest(const CFSWString &szWord, bool bStartSentence){
m_TimeStart=CFSTime::Now();
m_Items.Cleanup();
m_Cap.SetCap(szWord);
if (bStartSentence && m_Cap.GetCapMode()==CFSStrCap<CFSWString>::CAP_LOWER) {
m_Cap.SetCapMode(CFSStrCap<CFSWString>::CAP_INITIAL);
}
CFSWString szWordHigh=szWord.ToUpper();
INTPTR ipWordLength=szWordHigh.GetLength();
CFSWString szTemp;
INTPTR i, j;
long lLevel=100;
SetLevel(lLevel);
// Case problems & change list
i=SpellWord(szWordHigh, szTemp, &lLevel);
if ((i==SPL_NOERROR || i==SPL_CHANGEONCE) && !szTemp.IsEmpty()){
SetLevel(GetLevelGroup(lLevel));
m_Items.AddItem(CSuggestorItem(szTemp, lLevel));
}
else SetLevel(5);
// Abbrevations
// !!! Unimplemented
// Quotes
/* if (ipWordLength>=2 &&
(szAllQuot.Find(szWordHigh[0])>=0 || szAllQuot.Find(szWordHigh[ipWordLength-1])>=0))
{
szTemp=szWordHigh;
int iPos;
if (szAllQuot.Find(szTemp[0])>=0){
if (szQuotLeft.Find(szTemp[0])>=0) { }
else if ((iPos=szQuotRight.Find(szTemp[0]))>=0) { szTemp[0]=szQuotLeft[iPos]; }
else if (szDQuotLeft.Find(szTemp[0])>=0) { }
else if ((iPos=szDQuotRight.Find(szTemp[0]))>=0) { szTemp[0]=szDQuotLeft[iPos]; }
if (szAllQuot.Find(szTemp[ipWordLength-1])>=0) { szTemp[ipWordLength-1]=(szQuotRight+szDQuotRight)[(szQuotLeft+szDQuotLeft).Find(szTemp[0])];
}
else{
if (szQuotRight.Find(szTemp[ipWordLength-1])>=0) { }
else if ((iPos=szQuotLeft.Find(szTemp[ipWordLength-1]))>=0) { szTemp[ipWordLength-1]=szQuotRight[iPos]; }
else if (szDQuotRight.Find(szTemp[ipWordLength-1])>=0) { }
else if ((iPos=szDQuotLeft.Find(szTemp[ipWordLength-1]))>=0) { szTemp[ipWordLength-1]=szDQuotRight[iPos]; }
}
CheckAndAdd(szTemp);
}*/
// Add space
for (i=1; i<ipWordLength-1; i++){
static CFSWString szPunktuation=FSWSTR(".:,;!?");
if (szPunktuation.Find(szWord[i])>=0){
long lLevel1, lLevel2;
CFSWString szTemp1, szTemp2;
if (SpellWord(szWord.Left(i+1), szTemp1, &lLevel1)==SPL_NOERROR &&
SpellWord(szWord.Mid(i+1), szTemp2, &lLevel2)==SPL_NOERROR)
{
m_Items.AddItem(CSuggestorItem(szWord.Left(i+1)+L' '+szWord.Mid(i+1), FSMAX(lLevel1, lLevel2)));
}
}
}
// Delete following blocks: le[nnu][nnu]jaam
for (i=2; i<=3; i++){
for (j=0; j<ipWordLength-i-i; j++){
if (memcmp((const FSWCHAR *)szWordHigh+j, (const FSWCHAR *)szWordHigh+j+i, i*sizeof(FSWCHAR))==0){
szTemp=szWordHigh.Left(j)+szWordHigh.Mid(j+i);
CheckAndAdd(szTemp);
}
}
}
// Change following letters: abb -> aab & aab -> abb
for (i=1; i<ipWordLength-1; i++){
if (szWordHigh[i]==szWordHigh[i+1]){
szTemp=szWordHigh;
szTemp[i]=szTemp[i-1];
if (FSIsLetterEst(szTemp[i])) CheckAndAdd(szTemp);
}
else if (szWordHigh[i]==szWordHigh[i-1]){
szTemp=szWordHigh;
szTemp[i]=szTemp[i+1];
if (FSIsLetterEst(szTemp[i])) CheckAndAdd(szTemp);
}
}
// Exchange letters: van[na]ema -> van[an]ema
szTemp=szWordHigh;
for (i=1; i<ipWordLength; i++){
if (szTemp[i]!=szTemp[i-1]){
FSWCHAR ch=szTemp[i];
szTemp[i]=szTemp[i-1];
szTemp[i-1]=ch;
CheckAndAdd(szTemp);
szTemp[i-1]=szTemp[i];
szTemp[i]=ch;
}
}
//.........这里部分代码省略.........
示例4: the_shift
CFSWString the_shift(CFSWString s) {
/*
On mingi võimalus, et lihtsustus tuleb teha kahes astmes. LQ-ta ja LQ-ga (vt shift_pattern). Kõik
seotud sellega, et pole vältenihutusreeglitest lõpuni aru saanud. Eksisteerib Mihkla versioon ja
ametlik versioon. Tänud Mihklale, kes kala asemel annab tattninale õnge, see õpetab ujuma.
Maadlesin õngega pikalt.
*/
CFSWString res;
CFSWString code;
INTPTR pos;
INTPTR i = 0;
INTPTR x;
while (s.GetLength() > 0) {
CFSWString c = s.GetAt(0);
s.Delete(0, 1);
if (is_uvowel(c)) {
c = c.ToLower();
code += shift_pattern(c);
res += c;
pos = i;
} else
if (c == d && code.GetLength() > 0) {
res += c;
code += c;
CFSWString t_code = code;
t_code += shift_pattern(s.GetAt(0));
x = pattern_lookup(t_code); //orig üle silbipiiri
if (x > -1) {
x += pos;
if (x > res.GetLength()) { // kui kargab järgmisse silpi
x = x - res.GetLength();
s.Insert(x, colon);
} else
res.Insert(x, colon);
i++;
} else {
t_code = simplify_pattern(t_code);
x = pattern_lookup(t_code); //liht üle silbipiiri
if (x > -1) {
x += pos;
if (x > res.GetLength()) { // kui kargab järgmisse silpi
x = x - res.GetLength();
s.Insert(x, colon);
} else
res.Insert(x, colon);
i++;
} else {
x = pattern_lookup(code); //orig
if (x > -1) {
x += pos;
res.Insert(x, colon);
i++;
} else {
code = simplify_pattern(code);
x = pattern_lookup(code); //liht
if (x > -1) {
x += pos;
res.Insert(x, colon);
i++;
}
}
}
}
code = empty_str;
} else {
res += c;
if (code.GetLength() > 0) {
code += shift_pattern(c);
}
}
i++;
} //while
// sõna lõpus
if (code.GetLength() > 0) {
code += L"#";
//imelik koht ainult "lonksu" pärast
if ((code.Left(3) == L"VLQ") && ((code.GetAt(3) == L's') || (code.GetAt(3) == L'h') || (code.GetAt(3) == L'v') || (code.GetAt(3) == L'j'))) {
code = L"VLQC#";
}
INTPTR x = pattern_lookup(code);
if (x > -1) {
x += pos;
res.Insert(x, colon);
} else {
code = simplify_pattern(code);
x = pattern_lookup(code);
if (x > -1) {
x += pos;
res.Insert(x, colon);
}
}
code = empty_str;
}
return res;
}