fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <locale>
  4. #include <vector>
  5. #include <iterator>
  6. #include <sstream>
  7.  
  8. struct digits_only: std::ctype<char>
  9. {
  10. digits_only(): std::ctype<char>(get_table()) {}
  11.  
  12. static std::ctype_base::mask const* get_table()
  13. {
  14. static std::vector<std::ctype_base::mask>
  15. rc(std::ctype<char>::table_size,std::ctype_base::space);
  16. for (int i='0'; i<'9'; i++)
  17. rc[i] = std::ctype_base::digit;
  18. return &rc[0];
  19. }
  20. };
  21.  
  22. int main() {
  23. std::string input("123s45dfas6");
  24. std::istringstream buf(input);
  25. buf.imbue(std::locale(std::locale(), new digits_only()));
  26.  
  27. std::copy(std::istream_iterator<char>(buf),
  28. std::istream_iterator<char>(),
  29. std::ostream_iterator<char>(std::cout, ""));
  30. }
  31.  
Success #stdin #stdout 0.01s 2820KB
stdin
Standard input is empty
stdout
123456