Faire quelques exercices simples, j'ai maintenant un énorme doute sur iostream et les pointeurs.Passer le pointeur char à cin et cin.get()
Ce sont les 2 fichiers légèrement différentes que j'ai fait (ils ont tous deux de travail):
fichier 1 reçoit une entrée comme "Mon nom est # Marco" et imprime cout "Mynameis"
int main(){
using namespace std;
char* ch=new char[256];
int count=0;
cout <<"Enter chars, # to quit:\n";
cin >> ch;
while(*ch!='#'){
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
return 0;
}
Fichier 2 reçoit la même entrée que précédemment, mais cette fois imprime les espaces cout aussi:
int main(){
using namespace std;
char* ch=new char[256];
int count=0;
cout <<"Enter chars, # to quit:\n";
cin.get(*ch);
while(*ch!='#'){
cout << *ch;
++count;
cin.get(*ch);
}
cout << endl << count << " characters read\n";
return 0;
}
ce que je ne comprends pas pourquoi dans le second fichier à la ligne 8, je dois écrire « cout < < * ch "au lieu de" cout < < ch "comme dans le premier. En fait, si je l'utilise « Cout < < ch » dans le fichier 2, tout ce que je reçois est un tas de symboles aléatoires (personnages pris de l'adresse du pointeur, je suppose)