fork(1) download
  1. #include <iostream>
  2. #include <cctype>
  3.  
  4. enum state {
  5. s_zero, s_number, s_end
  6. };
  7.  
  8. state m_next(const char*& s, size_t& n){
  9. state st;
  10.  
  11. if(! *s)
  12. st = s_end;
  13. else {
  14. while(*s && ! std::isdigit(*s))
  15. ++s;
  16.  
  17. if(*s == '0'){
  18. ++s;
  19. st = s_zero;
  20. } else {
  21. for(n = 0; std::isdigit(*s); ++s)
  22. n = n*10 + (size_t)(*s - '0');
  23. st = s_number;
  24. }
  25. }
  26. return st;
  27. }
  28.  
  29.  
  30. int main(void){
  31. char s[] = "1 2 4 0 4 4 5 0 32 21 35 0 3 0";
  32.  
  33. state st;
  34. size_t n;
  35.  
  36. size_t sum = 0;
  37. const char* ptr = &s[0];
  38. do {
  39.  
  40. switch((st = m_next(ptr, n))){
  41. case s_number:
  42. sum += n;
  43. break;
  44. case s_zero:
  45. std::cout << "sum: " << sum << std::endl;
  46. sum = 0;
  47. break;
  48. }
  49.  
  50. } while(st != s_end);
  51. return 0;
  52. }
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
sum: 7
sum: 13
sum: 88
sum: 3