fork(2) download
  1. #include <cstddef>
  2. #include <stdexcept>
  3.  
  4. constexpr std::uint64_t fnv(const char* p, std::size_t len,
  5. std::uint64_t h = 0xcbf29ce484222325) {
  6. return len == 0? h : fnv(p+1, len-1, (h ^ *p) * 0x00000100000001b3);
  7. }
  8.  
  9. constexpr std::uint64_t operator "" _fnv( char const* str, std::size_t len ) {
  10. return fnv(str, len);
  11. }
  12.  
  13. #include <iostream>
  14. #include <string>
  15.  
  16. int main()
  17. {
  18. for (std::string str; getline(std::cin, str);) {
  19. switch(fnv(str.data(), str.size()))
  20. {
  21. case "Hallo"_fnv:
  22. std::cout << "Welt!";
  23. break;
  24. case "Welt"_fnv:
  25. std::cout << "Hallo!";
  26. break;
  27. default:
  28. std::cout << "Nochmal probier'n!";
  29. }
  30. }
  31. }
Success #stdin #stdout 0s 3232KB
stdin
Hallo
Welt
stdout
Welt!Hallo!