使用CString和boost字符串算法 - 减少到一个typedef?

时间:2011-11-28 14:48:07

标签: c++ boost range cstring

我需要为MFC项目编写一些代码,但我不知道如何在使用MFC时获得所需的代码。

我首先使用STL类型原型化我的函数,然后使用boost。

STL原型

#include <string>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/find.hpp>

void ProtoTest()
{
    std::string sText("123Hello4");
    boost::iterator_range<std::string::iterator> nc_result = find_token(sText, boost::algorithm::is_alpha(), boost::algorithm ::token_compress_on);
}

结果=“你好”

我最终成功地使用了MFC,但是我必须提供两个typedef。我想在一个中完成,但是没有太多关于使用boost中提供的MFC端口的文档。

#include "stdafx.h"
#include <boost\range\atl.hpp>

void Test()
{
    typedef boost::range_iterator<CString>::type CString_it;
    typedef boost::iterator_range<CString_it> CString_range;
    CString strText("123Hello4");
    CString_range r;
    r = find_token(text, boost::algorithm::is_alpha(), boost::algorithm ::token_compress_on);
}

再次结果=“你好”

我是否可以使用一个typedef来保存find_token的结果,而不是需要两个typdef来实现它。

1 个答案:

答案 0 :(得分:1)

你可以把它们组合起来

typedef boost::iterator_range<boost::range_iterator<CString>::type> CString_range;

但我不知道这是否有利。