Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstdint>
- int main()
- {
- const char* minus_one = "0xffffffff";
- std::stringstream ss;
- ss << minus_one;
- std::cout << "input string : " << ss.str() << "n"; // outputs "0xffffffff"
- // C-style conversion
- int32_t cint;
- cint = strtol(ss.str().c_str(), NULL, 0);
- std::cout << "strtol conv : " << cint << " (" << std::hex << cint << ")n"; // outputs "-1 (ffffffff)"
- std::cout << std::dec;
- // C++-style conversion
- int32_t cppint;
- ss >> std::hex >> cppint;
- std::cout << std::dec << "ssextr conv : " << cppint << " (" << std::hex << cppint << ")n"; // outputs "0 (0)" <- ERROR
- std::cout << std::dec;
- if (ss.fail()) std::cout << "Error converting number.n";
- // C++-style conversion with cast
- uint32_t cppuint;
- int32_t cppint2;
- ss.clear();
- ss.str(minus_one);
- ss >> std::hex >> cppuint;
- cppint2 = (int32_t)cppuint;
- std::cout << std::dec << "ssextr cast conv: " << cppint2 << " (" << std::hex << cppint2 << ")n"; // outputs "-1 (0xffffffff)"
- std::cout << std::dec;
- if (ss.fail()) std::cout << "Error converting number.n";
- exit(EXIT_SUCCESS);
- }
Add Comment
Please, Sign In to add comment