2017-11-01 3 views
1

Also ich möchte eine Liste von Zahlen bekommen. So würde 1,2,3-5 sagen 1,2,3,4,5 Dies ist, was habe ich codiert bisherZahlen mit Zeichen trennen

cin>>num; 
vec.push_back(num); 
if(cin.peek() == ',') 
    cin.ignore(); 

Wie kann ich die Reichweite Teil tun?

Antwort

1

Click Here mehr über cin.peek()

Click Here für einen großen Stack Overflow Frage

Click Here Ich habe diese Quelle zu lesen, um Ihnen zu helfen.

Ich nehme an, Sie verwenden Namespace std Wenn Sie mehr Klärung Kommentar benötigen und ich werde weitere Kommentare zu meinem Code hinzufügen.

cin>>ws;  //eats up white spaces 
cout.flush(); 
    do   //loop to check every number 
    { 
     cin>>num1; 
     num_vec.push_back(num1); 
     if(cin.peek() == ',') 
     { 
      cin.ignore(); 
     } 
     else if(cin.peek() == '-')  
     { 
      cin.ignore(); 
     //if it sees a dash it will ignore the dash 
     // similar to what you did with your comma 
      cin>>num2; 
      for(++num1; num1<=num2; num1++) 
      { 
       num_vec.push_back(num1); 
     //keeps adding 1 to that range and pushing it back to vector 
      } 
       if(cin.peek() == ',') 
       { 
        cin.ignore(); 
       }  
     } 
    }while(cin.peek() != '\n'); 
+0

Was ist cout.flush()? – Alex

+1

funktioniert, kann aber optimiert werden +1 –

+0

@Alex löscht, was auch immer im Puffer ist – Pouya

Verwandte Themen