특히 여러개의 문자열 집합 사이에 구분자를 넣고 마지막에 구분자를 빼는 작업도 쉬운일이 아니다.
이를 쉽게 처리해주는 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; }
덧글을 달아 주세요