fork download
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main() {
  7.  
  8. istringstream iss("2.832 1.3067 nana1.678 xxx.05xyz");
  9. double num = 0;
  10. while(iss >> num || !iss.eof()) {
  11. if(iss.fail()) {
  12. iss.clear();
  13. int loopcount = 0;
  14. while(iss) {
  15. char dummy = iss.peek();
  16. if(std::isdigit(dummy) || dummy == '.') {
  17. // Stop consuming invalid double characters
  18. break;
  19. }
  20. else {
  21. iss >> dummy; // Consume invalid double characters
  22. }
  23. std::cout << "loop " << loopcount++ << std::endl;
  24. }
  25. continue;
  26. }
  27. cout << num << endl;
  28. }
  29. return 0;
  30. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
2.832
1.3067
loop 0
loop 1
loop 2
loop 3
1.678
loop 0
loop 1
loop 2
0.05
loop 0
loop 1
loop 2
loop 3