在CString中查找以空格分隔的单词的最佳方法

dje*_*dot 2 c++ mfc

例如:" select * from somewhere where x = 1"

我想找到以空格分隔的" where",而不是" where"内的" somewhere".在示例中"where"由空格分隔,但它可以是回车符,制表符等.

注意:我知道正则表达式会让它变得容易(正则表达式相当于" \bwhere\b"),但我不想为我的项目添加一个正则表达式库来执行此操作.

Ala*_*lan 7

如果你想使用字符串操作的纯MFC方法,那么这应该工作:

CString strSql = _T("select * from somewhere where x = 1");

int nTokenPos = 0;
CString strToken = strSql.Tokenize(_T(" \r\n\t"), nTokenPos);

while (!strToken.IsEmpty())
{
    if (strToken.Trim().CompareNoCase(_T("where")) == 0)
        return TRUE; // found
    strToken = strSql.Tokenize(_T(" \r\n\t"), nTokenPos);
}

return FALSE; // not found
Run Code Online (Sandbox Code Playgroud)