Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1.  
  2. #include <cassert>
  3. #include <cstdint>
  4. #include <sstream>
  5. #include <string>
  6.  
  7. using Int = std::int32_t;
  8.  
  9. bool deserialize(const std::string &s, Int expected_opcode, Int expected_item_id, Int expected_item_count) noexcept
  10. {
  11.     std::string delimeter = " ";
  12.    
  13.     auto s1 = s.substr(1, s.find(delimeter));
  14.     auto s2 = s.substr(2, s.find(delimeter));
  15.    
  16.     auto item_id = static_cast<Int>(std::stoi(s1));
  17.     auto item_count = static_cast<Int>(std::stoi(s2));
  18.    
  19.     std::istringstream error_check1(s1);
  20.     std::istringstream error_check2(s2);
  21.    
  22.     if (!error_check1.eof() || !error_check2.eof())
  23.     {
  24.         return false;
  25.     }
  26.    
  27.     if (item_id != expected_item_id || item_count != expected_item_count)
  28.     {
  29.         return false;
  30.     }
  31.    
  32.     return true;
  33. }
  34.  
  35. int main()
  36. {
  37.     assert(deserialize("123 456 789\0", 123, 456, 789));
  38.     assert(!deserialize("123 456 789", 123, 456, 789));
  39.     assert(!deserialize("", -1, -1, -1));
  40.     assert(!deserialize("\0", -1, -1, -1));
  41.     assert(!deserialize("123", 123, -1, -1));
  42.     assert(!deserialize("123\0", 123, -1, -1));
  43.     assert(!deserialize("123 456\0", 123, 456, -1));
  44.     assert(!deserialize("123 456", 123, 456, -1));
  45.    
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement