J'essaie d'imprimer des caractères dans la console à des coordonnées spécifiées. Jusqu'à présent, j'ai utilisé le très moche Cela ne fonctionne pas, même si je plaçait à Similaire à utiliser Alors, faites-vous ce que vous avez 'm à la recherche? p> p> printf ("\ 033 [% d;% dh% s \ n", 2, 2, "str"); code> mais je devais juste demander si C ++ avait une autre façon de le faire. Le problème n'est même pas que c'est moche, le problème se pose lorsque j'essaie de me faire une fonction plus jolie comme si:
(char *) code>.
Un autre problème est que je dois imprimer le
\ n code> pour que la page soit actualisée ... Je ne profite tout simplement pas d'utiliser
printf code> en général. P>
COUT code> au lieu de
printf code>, je crois qu'il devrait y avoir un moyen plus récent de le faire (idéalement un moyen qui me permet d'écrire facilement des chaînes où je vouloir sur l'écran, et idéalement un moyen qui ne nécessite pas ces symboles étranges:
\ 033 [% d;% dh code>) p>
7 Réponses :
Curse est ce que vous recherchez. P>
Je ne trouve pas quoi inclure pour avoir accès aux malédictions. Je ne peux pas non plus trouver de documentation pour l'API ..
Ce que vous faites est d'utiliser des caractères magiques spécifiques très spécifiques dans une application sinueuse C ++. Bien que cela fonctionne, vous aurez probablement un temps de beaucoup plus facile à utiliser une bibliothèque qui vous empêche de traiter des détails de mise en œuvre spécifiques au terminal et fournit des fonctions qui font ce dont vous avez besoin. P>
Étudier si des malédictions ou des bibliothèques de ncurses sont disponibles pour votre système. P>
Quelques améliorations à votre fonction: cette version: p> Cependant, car Varargs est essentiellement une caractéristique C et ne comprend pas vraiment les objets C ++, vous devez l'appeler comme ceci: P>
stdout code> sans imprimer une nouvelle ligne li>
x code> et
y code> dans la chaîne de format (Votre utilisation de
x code> et
x code> peut avoir été un TYPO) LI>
ul>
printToCoordinates(10, 10, "%s", text.c_str());
qu'est-ce que le fflush (stdout); faire une partie?
Normalement stdout est "tamponné", ce qui signifie que la bibliothèque d'exécution C faisce que vous imprimez et ne l'envoie à la console lorsque (a) que vous produisez une nouvelle ligne, (B) la file d'attente de la file d'attente, ou (c) que vous affleurez manuellement le fichier. . Utilisation de fflush () code> Dans ce cas est plus simple et évidente que l'impression d'une nouvelle ligne (et elle évitera des problèmes de défilement si vous essayez d'imprimer des trucs sur la ligne inférieure de l'écran).
Je me souviens d'utiliser gotoxy (x, y) Code>
dans Turbo C ++ (CONIO.H) - Je ne sais pas si cela fonctionnera pour vous cependant. Il déplace le curseur sur les coordonnées spécifiées par x code> et
y code>.
Gotoxy Code> Clone: P>
#include <windows.h>
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
std_output_handle code> a un espace dedans. Assurez-vous de le supprimer.
Premier: Vous ne souhaitez pas copier l'argument de chaîne, vous souhaitez la transmettre par ( sur votre question: C ++ n'a aucun moyen de faire ce que vous voulez, mais cela vous permet d'utiliser des moyens spécifiques à la plate-forme de le faire. Vous devriez nous dire votre plate-forme afin d'obtenir des réponses significatives. p> p> const code>). En outre, la seule façon de recevoir un
char * code> à partir d'un
std :: string code> est d'appeler son
C_STR () code> Fonction membre: p>
Devrait être printf (...., x, y, texte); pas printf (..., x, x, texte) .. Impossible d'éditer ci-dessus.
void screenpos(int x,int y,char textyowanawrite[20]) { //printf for right shift // \n for downward shift //loops through the rows and shifts down for(int row=0;row<=y;row++) { printf("\n"); for (int i = 0; i < x; i++) { printf("%s "," " ); } } printf("%s ",textyowanawrite ); } //this should work to certain extinct only problem is u cant go from somewhere like 4,4 to 2,2 thats the problem
J'ai une méthode différente différente. Je ne sais pas si c'est mieux que celui des ncurses, alors je quitte que les UPVOTERS décident.
Vous pouvez utiliser Un exemple est le suivant: P> outtextxy (x, y, texte); code>
Où les coordonnées x & y sont des coordonnées. P>
int main(void) {
int gdriver = DETECT, gmode;
  int x = 200, y = 200;
Â
  initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
Â
  outtextxy(x, y, "Hello World");
  closegraph();
}
Le package graphique est non standard et probablement indisponible sur Ubuntu, la plaque de l'OP
Sur quelle plate-forme travaillez-vous?
Ubuntu 9.04, j'utilise g ++ pour compiler