2

我需要检查我的CString对象是否MFC以特定字符串结尾。

我知道它boost::algorithm有许多用于字符串操作的函数,并且在标题boost/algorithm/string/predicate.hpp中它可以用于此目的。

我通常将此库与std::string. 你知道使用这个库的便捷方法CString吗?

我知道该库是通用的,也可以与用作模板参数的其他字符串库一起使用,但尚不清楚(以及是否可能)将此功能应用于CString.

如果可能的话,你能帮我吗?

4

2 回答 2

2

根据Boost String Algorithms Library,“请参阅设计章节以查看支持的字符串类型的精确规范”,其中除其他外说,“字符串类型的第一个要求是它必须 [be] 可使用Boost.Range访问”,以及请注意底部由 Shunsuke Sogame 编写的MFC/ATL实现,它应该允许您组合库。

编辑:由于您在下面的评论中提到了正则表达式,这就是您真正需要做的一切(假设是 unicode 构建):

CString inputString;
wcmatch matchGroups;
wregex yourRegex(L"^(.*)$"), regex::icase);
if (regex_search(static_cast<LPCWSTR>(inputString), matchGroups, yourRegex))
{
    CString firstCapture = matchGroups[1].str().c_str();
}

请注意我们如何将不同的字符串类型简化为原始指针以在库之间传递它们。用您的要求替换我的设计yourRegex,包括您是否忽略大小写或明确说明锚点。

于 2010-09-17T09:27:47.430 回答
0

你为什么不省去麻烦而只使用CStringT::Right呢?

于 2010-09-17T08:31:49.037 回答