fork download
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <sstream>
  4.  
  5. template <typename T> struct scanf_format;
  6.  
  7. template <> struct scanf_format<int>
  8. {
  9. static constexpr const char* format = "%d";
  10. static constexpr const char* format2 = "%d %d";
  11. };
  12.  
  13. template <> struct scanf_format<long long>
  14. {
  15. static constexpr const char* format = "%lld";
  16. static constexpr const char* format2 = "%lld %lld";
  17. };
  18.  
  19. template <typename T>
  20. void my_scanf(const char* buffer, T&a, T&b)
  21. {
  22. sscanf(buffer, scanf_format<T>::format2, &a, &b);
  23. }
  24.  
  25. template <typename T>
  26. void my_scanf2(const char* buffer, T&a, T&b)
  27. {
  28. std::stringstream ss(buffer);
  29. ss >> a >> b;
  30. }
  31.  
  32. int main(){
  33. int a;
  34. int b;
  35.  
  36. my_scanf("4 2", a, b);
  37. std::cout << a << b << std::endl;
  38. my_scanf2("4 2", a, b);
  39. std::cout << a << b << std::endl;
  40. }
  41.  
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
Standard output is empty