2017-06-01 2 views
-1

J'essaie de lire une ligne de caractères mais seulement de sortir les deuxième et quatrième caractères. J'ai du mal à ignorer le premier personnage. Je dois utiliser les fonctions get, peek et ignore. C'est mon code!Ne pas ignorer le premier caractère de 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

Donc, si je entrée ~ 12/.derg il émet ~ 1/ – Mark

+0

Votre code est même pas essayer de faire ce que vous avez décrit. Qu'attendez-vous du premier cin.get (char2)? Que pensez-vous que l'impression de char2 fera ensuite? Voici la référence à istrream (http://www.cplusplus.com/reference/istream/istream/get/) Je vous suggère de lire les fonctions et ce qu'elles font, et essayez à nouveau. –

Répondre

1

Le modèle est de continuer à lire à partir du flux d'entrée et de mettre l'expression de lecture dans la même boucle while comme dans le code ci-dessous, ainsi la boucle sort automatiquement sans avoir à vérifier explicitement

#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

la façon dont je le ferais est avec un tableau de caractères ...

#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

Utilisez std::getline pour lire une ligne et imprimer le deuxième et le quatrième caractère si possible.

#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"; 
     } 
    } 
}