Guest User

Untitled

a guest
Mar 6th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cstdint>
  6.  
  7.  
  8. int main()
  9. {
  10. const char* minus_one = "0xffffffff";
  11.  
  12. std::stringstream ss;
  13. ss << minus_one;
  14.  
  15. std::cout << "input string : " << ss.str() << "n"; // outputs "0xffffffff"
  16.  
  17. // C-style conversion
  18. int32_t cint;
  19. cint = strtol(ss.str().c_str(), NULL, 0);
  20. std::cout << "strtol conv : " << cint << " (" << std::hex << cint << ")n"; // outputs "-1 (ffffffff)"
  21. std::cout << std::dec;
  22.  
  23. // C++-style conversion
  24. int32_t cppint;
  25. ss >> std::hex >> cppint;
  26. std::cout << std::dec << "ssextr conv : " << cppint << " (" << std::hex << cppint << ")n"; // outputs "0 (0)" <- ERROR
  27. std::cout << std::dec;
  28. if (ss.fail()) std::cout << "Error converting number.n";
  29.  
  30. // C++-style conversion with cast
  31. uint32_t cppuint;
  32. int32_t cppint2;
  33. ss.clear();
  34. ss.str(minus_one);
  35. ss >> std::hex >> cppuint;
  36. cppint2 = (int32_t)cppuint;
  37. std::cout << std::dec << "ssextr cast conv: " << cppint2 << " (" << std::hex << cppint2 << ")n"; // outputs "-1 (0xffffffff)"
  38. std::cout << std::dec;
  39. if (ss.fail()) std::cout << "Error converting number.n";
  40.  
  41. exit(EXIT_SUCCESS);
  42. }
Add Comment
Please, Sign In to add comment