shushus

Спринт 8. Можем лучше: совершенствуем парсинг строки. Задание 1.

Feb 2nd, 2023
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. -----------------------------------------------------------------------
  2. main.cpp
  3. -----------------------------------------------------------------------
  4. #include <cassert>
  5. #include <iostream>
  6. #include <string_view>
  7. #include <vector>
  8.  
  9. using namespace std;
  10.  
  11. vector<string_view> SplitIntoWordsView(string_view str) {
  12.     str.remove_prefix(std::min(str.find_first_not_of(" "), str.size()));
  13.     vector<string_view> result;
  14.    
  15.     while (!str.empty()) {
  16.         int64_t space = str.find(' ');
  17.         result.push_back(str.substr(0, 0 + space));
  18.         str.remove_prefix(std::min(str.find(" "), str.size()));
  19.         str.remove_prefix(std::min(str.find_first_not_of(" "), str.size()));
  20.     }
  21.  
  22.     return result;
  23. }
  24.  
  25. int main() {
  26.     assert((SplitIntoWordsView("") == vector<string_view>{}));
  27.     assert((SplitIntoWordsView("     ") == vector<string_view>{}));
  28.     assert((SplitIntoWordsView("aaaaaaa") == vector{"aaaaaaa"sv}));
  29.     assert((SplitIntoWordsView("a") == vector{"a"sv}));
  30.     assert((SplitIntoWordsView("a b c") == vector{"a"sv, "b"sv, "c"sv}));
  31.     assert((SplitIntoWordsView("a    bbb   cc") == vector{"a"sv, "bbb"sv, "cc"sv}));
  32.     assert((SplitIntoWordsView("  a    bbb   cc") == vector{"a"sv, "bbb"sv, "cc"sv}));
  33.     assert((SplitIntoWordsView("a    bbb   cc   ") == vector{"a"sv, "bbb"sv, "cc"sv}));
  34.     assert((SplitIntoWordsView("  a    bbb   cc   ") == vector{"a"sv, "bbb"sv, "cc"sv}));
  35.     cout << "All OK" << endl;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment