Я хотел бы токенизировать поток на C ++, используя регулярное выражение, подобное тому, как это делается для строки:
std::vector<std::string> tokenize(const std::string& source, const std::regex& re)
{
auto tokens = std::vector<std::string>(
std::sregex_token_iterator{ begin(source), end(source), re, -1 },
std::sregex_token_iterator{}
);
return tokens;
}
Разница будет заключаться в передаче istream
как source
переменная.
Я мог бы сначала скопировать содержимое потока в строку, а затем выполнить токенизацию, но это кажется неэффективным.