Advertisement
Sanlover

Untitled

Dec 18th, 2021 (edited)
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. vector<string> split(const string& str, const string& pattern, int& count)
  8. {
  9. vector<string> strings;
  10. size_t previousPosition = 0;
  11. bool isEndedWithSeparator = false;
  12. for (size_t i = 0; i < str.size(); i++)
  13. {
  14. for (size_t j = 0; j < pattern.size(); j++)
  15. {
  16. if (str[i] == pattern[j])
  17. {
  18. string between;
  19. if (i == str.size() - 1 && str[i] == pattern[j])
  20. {
  21. isEndedWithSeparator = true;
  22. }
  23. if (previousPosition == 0)
  24. {
  25. between = str.substr(previousPosition, i - previousPosition);
  26. }
  27. else
  28. {
  29. between = str.substr(previousPosition + 1, i - previousPosition - 1);
  30. }
  31. if (!between.empty())
  32. {
  33. strings.push_back(between);
  34. }
  35. previousPosition = i;
  36. }
  37. }
  38. }
  39. if (!isEndedWithSeparator)
  40. {
  41. strings.push_back(str.substr(previousPosition + 1));
  42. }
  43.  
  44. count = static_cast<int>(strings.size());
  45. return strings;
  46. }
  47.  
  48. int main()
  49. {
  50. SetConsoleOutputCP(1251);
  51. int amount = 0;
  52. string pattern, str;
  53.  
  54. cout << "Введите строку, к которой хотите применить метод split = ";
  55. getline(cin, str);
  56.  
  57. cout << "Введите строку состоящую из знаков-разделителей (pattern) = ";
  58. getline(cin, pattern);
  59.  
  60. vector<string> var = split(str, pattern, amount);
  61. cout << endl << "Разделённые строки:" << endl;
  62. for (size_t i = 0; i < var.size(); i++)
  63. {
  64. cout << i << ") " << var[i] << endl;
  65. }
  66. return 0;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement