我需要检查CString
中的MFC
对象是否以特定字符串结尾。
我知道boost::algorithm
有许多用于字符串操作的函数,而标题boost/algorithm/string/predicate.hpp
中的函数可以用于此目的。
我通常将此库与std::string
一起使用。您是否知道在CString
中使用此库的便捷方式?
我知道该库是通用的,也可以与用作模板参数的其他字符串库一起使用,但是不清楚(以及是否可能)将此功能应用于CString
。
如果有可能,你可以帮助我吗?
答案 0 :(得分:2)
根据Boost String Algorithms Library,“参考design章节以查看支持的字符串类型的精确规范”,其中说“字符串类型的第一个要求是它必须[是]可以使用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
,包括您是否忽略案例或明确锚点。
答案 1 :(得分:0)
为什么不为自己省事,只使用CStringT::Right?