1. 程式人生 > 實用技巧 >c++ string split function

c++ string split function

#include <string>
#include <vector>
#include <regex>

struct SplitListItem
{
	std::string key;
	std::string value;
};

std::vector<SplitListItem> splitString(std::string origenString, std::regex pattern)
{
	std::smatch result;
	std::string::const_iterator iterStart = origenString.begin();
	std::string::const_iterator iterEnd = origenString.end();


	std::vector<std::string> splitList = {};
	std::vector<SplitListItem> resultSplitList = {};

	while (regex_search(iterStart, iterEnd, result, pattern))
	{
		splitList.emplace_back(iterStart, result[0].first);

		resultSplitList.push_back(SplitListItem{ result[0].str(),  splitList.back() });

		iterStart = result[0].second;
	}
	return resultSplitList;
}


std::vector<SplitListItem>  r = splitString("game.exe+009E820C+4+8-4", (std::regex)"[+-]");
for (size_t i = 0; i < r.size(); i++)
{
    std::cout << r[i].key << std::endl;
    std::cout << r[i].value << std::endl;
}