특히 여러개의 문자열 집합 사이에 구분자를 넣고 마지막에 구분자를 빼는 작업도 쉬운일이 아니다.
이를 쉽게 처리해주는 boost/spirit/karma 예제를 소개합니다.
#include < string >
#include < list >
#include < boost/spirit/include/karma.hpp >
bool StringSerializer(const std::list< std::string >& inputList, const std::string& delimiter, std::string& serialized )
{
using namespace boost::spirit;
serialized.clear();
std::back_insert_iterator< std::string > inserter(serialized);
const size_t repeatableCount = inputList.empty() ? 0 : inputList.size() - 1;
bool bSuccessed = karma::generate( inserter,
(karma::repeat(repeatableCount)[karma::string << karma::lit(delimiter.c_str())])
<< karma::string, inputList);
return bSuccessed;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::list< std::string > strList;
strList.push_back("123");
strList.push_back("456");
strList.push_back("789");
std::string serialized;
StringSerializer(strList, std::string(", "), serialized);
std::cout << serialized.c_str() << std::endl;
return 0;
}
덧글을 달아 주세요