Fonction Alternative dans iostream.h pour getch () de conio.h?
j'essaie de maintenir l'écran sur ma sortie en utilisant le fichier d'en-tête <iostream.h>
, mais je ne connais aucune fonction équivalente aux fonctions getch()
et clrscr()
de <conio.h>
dans <iostream.h>
ou toute autre bibliothèque C++. Il y a aucune de ces fonctions?
9 réponses
si vous travaillez sur windows, vous pouvez utiliser le système ("pause"), cela vous donnera le message" appuyez sur n'importe quelle touche pour continuer".
les fonctions conio.h
sont des extensions de compilateurs pour le langage, qui ne font pas partie de C ou C++. Il n'y a pas de remplacement direct dans le C++standard.
pour getch (), int ch = std::cin.get();
est probablement l'équivalent le plus proche -- mais gardez à l'esprit que cela se lira à partir de l'entrée standard tamponnée, alors que je pense que le conio.h getch
ne d'un tampon de lecture.
toute implémentation de clrscr()
sera très dépendante de la plateforme -- pas tous les écrans ou les terminaux ont une notion de compensation, et ceux qui ont des façons très différentes d'accéder à cette fonctionnalité.
si vous devez traiter le terminal comme autre chose qu'un ensemble de flux de caractères, votre meilleur pari est probablement de chercher une bibliothèque qui vous Cache Les détails du terminal, de l'écran ou de la console sous-jacente. Si vous êtes sur un système UNIXish, regardez la bibliothèque curses ou ncurses; Je ne sais pas de suggestions pour d'autres OS.
getch() et clrscr() fonctionneront avec C++. Inclure conio.h
cependant, si vous ne pouvez pas (pour une raison quelconque) inclure conio.h,
Que diriez-vous de cin>>dummy_var avec un message d'affichage demandant à l'utilisateur d'appuyer sur Entrée?
il suffit D'utiliser ces deux fonctions:
fflush(stdin);
getchar();
Visual studio et Dev C++ l'incluent dans son en-tête iostream
donc pas besoin d'inclure un fichier d'en-tête supplémentaire.
c'est Ce que j'utilise habituellement:
#include<iostream>
...
std::getchar();
réponse Tardive , vous pouvez utiliser std::cin.get()
, cela devrait fonctionner avec la plupart des compilateurs. Si cela ne fonctionne pas, essayez d'ajouter un autre.
int main () {
// ...
std::cin.get();
std::cin.get();
return 0x00;
}
utilisant system("PAUSE")
est uniquement disponible sur Windows et est un mauvais programmation habitude . La raison en est qu'il est littéralement pauses ou gèle votre programme au lieu de simplement attendre entrée. IE. une touche pour quitter.
je comprends que c'est une vieille question, mais je vais répondre, néanmoins parce que les gens peuvent être à la recherche d'une réponse à une question similaire.
conio.h
est une (ancienne) de Windows et MS-DOS/PC-DOS de la bibliothèque C qui a été, et est encore utilisé pour de très de base, bare-metal le clavier de saisie et de manipulation dans Windows/DOS de l'environnement.
les deux getch()
et clrscr()
sont des ajouts non standard par cet en-tête, et devraient être evité dans la mesure du possible pour les fonctions C standard. getch()
peut généralement être remplacé par scanf()
, fread()
, en C et std::cin
et std::cin.get
en C++. Comme pour clrscr()
, le plus proche que vous pouvez obtenir est:
for(int i = 0; i < 100; i++)
{
printf("\n");
}
OU:
Il y a aussi ncurses.h
sur *nix environnements. Voici un lien pour avoir des infos à ce sujet.
vous pouvez utiliser le système ("pause"), qui produit le message" appuyez sur n'importe quelle touche pour continuer". Mais il fonctionne dans l'environnement windows. Je pense que toutes les commandes "système" sont des commandes dos. Corrigez - moi si je me trompe