2010-09-17 108 views
2

我需要检查MFC中的CString对象是否以特定字符串结尾。使用MFC CString提升字符串算法检查字符串的结尾

我知道boost::algorithm有许多功能意味着字符串操作,并且在标头boost/algorithm/string/predicate.hpp可以用于此目的。

我通常使用此库和std::string。你知道一个方便的方法来使用这个库也与CString

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

如果可能,你可以帮我吗?

回答

0

为什么你不救自己的麻烦,只使用CStringT::Right

+0

:)这是真的! :) – 2010-09-17 10:15:21

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替换为您的要求,包括您是否忽略大小写或明确指出锚点。

+0

谢谢肖恩!我会看看它并利用它。只是为了分享现在我使用MFC :: String :: boost :: regex。他们专门为MFC字符串,我正在看看 2010-09-17 10:17:28

+0

真的,你只需要利用所有的字符串容器可以减少到一个原始指针,所以在这种情况下,直接传递CString但首先使用'static_cast ()'。 – 2010-09-17 21:31:10