Заголовок этого поста:
Функция для получения строкового слова по слову
Поскольку все это можно сделать одним оператором, отдельная функция не нужно. Все эти многочисленные строки кода могут быть заменены с использованием современных элементов языка C ++ и стандартной библиотеки.
Пожалуйста, см .:
#include <iostream>
#include <string>
#include <regex>
#include <algorithm>
#include <iterator>
std::regex word{ R"(\w+)" };
int main() {
// The string
std::string name = " Help Final Test";
// Copy words to std::cout
std::copy(std::sregex_token_iterator(name.begin(), name.end(), word), {}, std::ostream_iterator<std::string>(std::cout, "\n"));
return 0;
}
Из-за простоты программы (одна строка кода Я не очень уверен, что объяснить. Итак, мы используем std::copy
, чтобы скопировать что-то между исходной парой итераторов в конечный итератор. Целевым итератором является std::ostream_iterator
, который (очень упрощенно) вызывает функцию вставки << для каждого исходного элемента. </p>
Исходным элементом является std::sregex_token_iterater
, который был разработан для итерации по элементам в Строка, которая следует определенному шаблону. Шаблон \ w + означает один или несколько буквенных символов.
Если у вас есть вопросы, я с удовольствием отвечу.