Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <Windows.h>
- using namespace std;
- vector<string> split(const string& str, const string& pattern, int& count)
- {
- vector<string> strings;
- size_t previousPosition = 0;
- bool isEndedWithSeparator = false;
- for (size_t i = 0; i < str.size(); i++)
- {
- for (size_t j = 0; j < pattern.size(); j++)
- {
- if (str[i] == pattern[j])
- {
- string between;
- if (i == str.size() - 1 && str[i] == pattern[j])
- {
- isEndedWithSeparator = true;
- }
- if (previousPosition == 0)
- {
- between = str.substr(previousPosition, i - previousPosition);
- }
- else
- {
- between = str.substr(previousPosition + 1, i - previousPosition - 1);
- }
- if (!between.empty())
- {
- strings.push_back(between);
- }
- previousPosition = i;
- }
- }
- }
- if (!isEndedWithSeparator)
- {
- strings.push_back(str.substr(previousPosition + 1));
- }
- count = static_cast<int>(strings.size());
- return strings;
- }
- int main()
- {
- SetConsoleOutputCP(1251);
- int amount = 0;
- string pattern, str;
- cout << "Введите строку, к которой хотите применить метод split = ";
- getline(cin, str);
- cout << "Введите строку состоящую из знаков-разделителей (pattern) = ";
- getline(cin, pattern);
- vector<string> var = split(str, pattern, amount);
- cout << endl << "Разделённые строки:" << endl;
- for (size_t i = 0; i < var.size(); i++)
- {
- cout << i << ") " << var[i] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement