fork(11) download
  1. #include <iostream>
  2. #include <locale>
  3. #include <string>
  4. #include <sstream>
  5. #include <algorithm>
  6. #include <iterator>
  7. #include <cstring>
  8.  
  9. std::string extract_ints(std::ctype_base::mask category, std::string str, std::ctype<char> const& facet)
  10. {
  11. using std::strlen;
  12.  
  13. char const *begin = &str.front(),
  14. *end = &str.back();
  15.  
  16. auto res = facet.scan_is(category, begin, end);
  17.  
  18. begin = &res[0];
  19. end = &res[strlen(res)];
  20.  
  21. return std::string(begin, end);
  22. }
  23.  
  24. std::string extract_ints(std::string str)
  25. {
  26. return extract_ints(std::ctype_base::digit, str,
  27. std::use_facet<std::ctype<char>>(std::locale("")));
  28. }
  29.  
  30. int main()
  31. {
  32. int a, b, c;
  33.  
  34. std::string str = "abc 1 2 3";
  35. std::stringstream ss(extract_ints(str));
  36.  
  37. ss >> a >> b >> c;
  38.  
  39. std::cout << a << '\n' << b << '\n' << c;
  40. }
Success #stdin #stdout 0s 4516KB
stdin
Standard input is empty
stdout
1
2
3