Advertisement
kutuzzzov

Урок 9-2 Совершенствуем парсинг строки

Dec 29th, 2022 (edited)
1,912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1. #include <string_view>
  2. #include <map>
  3. #include <cassert>
  4. #include "my_assert.h"
  5.  
  6. using namespace std;
  7.  
  8. class Translator {
  9. public:
  10.     Translator() = default;
  11.  
  12.     void Add(string_view source, string_view target) {
  13.         rus_eng_[static_cast<string>(source)] = target;
  14.         eng_rus_[static_cast<string>(target)] = source;
  15.     }
  16.  
  17.     string_view TranslateForward(string_view source) const {
  18.         if (rus_eng_.count(static_cast<string>(source))) {
  19.             return rus_eng_.at(static_cast<string>(source));
  20.         }
  21.         return {};
  22.     }
  23.    
  24.     string_view TranslateBackward(string_view target) const {
  25.         if (eng_rus_.count(static_cast<string>(target))){
  26.             return eng_rus_.at(static_cast<string>(target));
  27.     }
  28.         return {};
  29.     }
  30.  
  31. private:
  32.     map<string, string> rus_eng_{};
  33.     map<string, string> eng_rus_{};
  34. };
  35.  
  36. void TestSimple() {
  37.     Translator translator;
  38.     translator.Add(string("okno"s), string("window"s));
  39.     translator.Add(string("stol"s), string("table"s));
  40.  
  41.     assert(translator.TranslateForward("okno"s) == "window"s);
  42.     assert(translator.TranslateBackward("table"s) == "stol"s);
  43.     assert(translator.TranslateForward("table"s) == ""s);
  44. }
  45.  
  46. int main() {
  47.     TestSimple();
  48.     return 0;
  49. }
  50.  
  51. // my_assert.h
  52.  
  53. #pragma once
  54. #include <string>
  55. #include <cassert>
  56.  
  57. /*void TestSimple() {
  58.     Translator translator;
  59.     translator.Add(string("okno"s), string("window"s));
  60.     translator.Add(string("stol"s), string("table"s));
  61.  
  62.     assert(translator.TranslateForward("okno"s) == "window"s);
  63.     assert(translator.TranslateBackward("table"s) == "stol"s);
  64.     assert(translator.TranslateForward("table"s) == ""s);
  65. }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement