используя CString с алгоритмами повышения строки - уменьшить до одного typedef? - PullRequest
2 голосов
/ 28 ноября 2011

Мне нужно написать код для проекта MFC, но я не знаю, как заставить требуемый код работать при использовании MFC.

Сначала я прототипировал свою функцию, используя только типы STL, и выполнял повышение.

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);
}

Result = "Hello"

В конце концов мне удалось заставить его работать с MFC, однако мне пришлось предоставить две typedef. Я хотел бы сделать это в одном, однако документации по использованию порта MFC, предоставленной в boost, не так много.

#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, вместо того, чтобы требовать две typedef для его достижения.

1 Ответ

1 голос
/ 28 ноября 2011

Вы можете просто объединить их

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

Но я не знаю, является ли это преимуществом.

...