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?

21
demandé sur Jonathan Leffler 2009-09-04 09:40:36

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".

-22
répondu bmeric 2009-09-04 10:01:03

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.

28
répondu Stephen Veiss 2018-06-15 09:12:00

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?

7
répondu Kshitij Saxena -KJ- 2009-09-04 05:47:20

utilisez cin.get ();

6
répondu anonymous 2010-12-16 02:16:32

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.

3
répondu bkmagnetron 2012-06-18 19:04:26

c'est Ce que j'utilise habituellement:

#include<iostream>
...
std::getchar();
3
répondu CLearner 2013-04-11 22:54:03

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.

1
répondu iKlsR 2017-05-23 10:30:08

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.

1
répondu Mason Watmough 2016-01-19 01:12:40

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

-5
répondu rockstar 2012-04-26 05:01:46