Centrer un texte dans c++

Fermé
ali.rachid Messages postés 292 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 22 juin 2021 - Modifié le 16 févr. 2019 à 00:48
ali.rachid Messages postés 292 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 22 juin 2021 - 22 févr. 2019 à 20:55
Salut,

Je veux savoir comment centrer un texte dans c++.

Merci d'avance.

2 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 18 févr. 2019 à 13:00
Salut ali.rachid,

Tu ne peux pas le faire en C, ni en C++ standard, car il n'y a aucun moyen de déterminer la largeur de la console prévu dans ces langages en standard.

Tu peux, par contre, certainement utiliser les API propres à ton système d'exploitation si tu veux faire cela (le code ne sera pas standard, et ne fonctionnera que pour ce système).

Par exemple, sous Windows avec GetConsoleScreenBufferInfo().

Ensuite, pour centrer un texte, tu peux soit l'afficher en ajoutant des espaces avant le texte, pour le placer à la colonne que tu souhaites, ou utiliser l'API de ton système d'exploitation pour déplacer le curseur d'affichage aux coordonnées de la console où tu veux écrire (tant qu'à faire).

Par exemple, sous Windows avec SetConsoleCursorPosition().

En C, cela donnerait quelque chose comme ceci (non testé, je suis sous Linux) :

#include <stdio.h>
#include <string.h>
#include <windows.h>

int main(void) {
    HANDLE hStdout;
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 

    char s[] = "texte";
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) {
        printf("Error doing GetConsoleScreenBufferInfo (%d)\n", GetLastError()); 
        return 1;
    }

    csbiInfo->dwCursorPosition.Y = csbiInfo->dwSize.Y / 2 - strlen(s) / 2;
    if (! SetConsoleCursorPosition(hStdout, csbiInfo->dwCursorPosition)) {                               
        printf("Error doing SetConsoleCursorPosition (%d)\n", GetLastError());
        return 1;
    }
    printf("%s\n", s);

    return 0;
}

Si tu veux vraiment faire du C++, remplace les entêtes par les entêtes C++, le
printf
par un
cout
,...

Dal
1
ali.rachid Messages postés 292 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 22 juin 2021 29
22 févr. 2019 à 20:55
OK, Merci Dal
0
nulenmathe Messages postés 425 Date d'inscription dimanche 7 septembre 2014 Statut Membre Dernière intervention 31 juillet 2019 150
16 févr. 2019 à 02:09
Bonjour,

Et pourquoi ne pas faire une recherche google plutôt que de créer un Nième topic sur le sujet ?

Merci
-1
ali.rachid Messages postés 292 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 22 juin 2021 29
22 févr. 2019 à 20:54
Salut,

Pour que j'ai posté ce topic, c'est que j'ai fais des milliers de recherches sur Google.

Merci.
0