2017-06-01 2 views
-1

Ich versuche, eine Zeile von Zeichen zu lesen, aber nur das zweite und vierte Zeichen auszugeben. Ich habe Probleme, das erste Zeichen zu ignorieren. Ich muss die Funktionen get, peek und ignore verwenden. Das ist mein Code!Nicht ignorieren erstes Zeichen in C++

#include<iostream> 
#include<iomanip> 

using namespace std; 

int main() 
{ 

char char2, char4; 

cout << "Enter an arbitary line. "<<endl; 



cin.get(char2); 
cout << char2; 
cin.get(char4); 
cout << char4; 

cin.ignore(1, '\n'); 


cin.peek(); 
cin.get(char2); 
cout << char2 << endl; 


    return 0; 
} 
+0

Also, wenn ich Eingabe ~ 12/.derg es gibt ~ 1/ – Mark

+0

Ihren Code nicht einmal versucht zu tun, was Sie beschrieben. Was erwartest du vom ersten cin.get (char2)? Was denkst du, dass char2 später drucken wird? Hier ist die Referenz zu istrream (http://www.cplusplus.com/reference/istream/istream/get/) Ich schlage vor, Sie lesen die Funktionen und was sie tun, und versuchen Sie es erneut. –

Antwort

1

Das Muster ist aus dem Eingangsstrom zu halten Lesen und setzen Sie den Lese Ausdruck in der while-Schleife, wie sich in dem folgenden Code, auf diese Weise die Schleife automatisch beendet, ohne explizit

#include <iostream> 

using namespace std; 

int main() { 
    auto ch = char{}; 
    auto counter = 0; 

    while (cin.get(ch)) { 
     counter++; 
     if (ch == '\n') { 
      counter = 0; 
      continue; 
     } else if (counter == 2 || counter == 4) { 
      cout << ch; 
     } 
    } 

    return 0; 
} 
0
zu überprüfen, die

die Art, wie ich es mit einem Zeichen-Array tun würde ...

#include <iostream> 

using namespace std; 

int main(){ 

char characterArray[4]; 
cout << "please enter four characters: "; 
cin >> characterArray; 
cout << characterArray[1] << " " << characterArray[3]; 

return 0; 
} 
0

Verwenden std::getline eine Zeile zu lesen und die zweiten und vierte Zeichen, wenn möglich drucken.

#include <iostream> 
#include <string> 

int main() { 
    std::string line; 
    if (std::getline(std::cin, line)) { 
     int n = line.size(); 
     if (n >= 2) { 
      std::cout << line[1] << "\n"; 
     } 
     if (n >= 4) { 
      std::cout << line[3] << "\n"; 
     } 
    } 
} 
Verwandte Themen