IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

wcout: comportement ~-~


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut wcout: comportement ~-~
    Salut tout le monde,


    J'ai un problème très spécial

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
          std::wcout<< 
            << L"A" // \u0041
            << "\u000D\u000A\u000D\u000A"
            << L"B" // \u0042
            << L"\r\n\r\n"
            << L"C" // \u0043
            << std::endl;
    La sortie devrait selon moi avoir cette allure

    A....B....C..
    410D0A0D0A420D0A0D0A430D0A

    mais j'obtiens ça

    A......B......C..
    410D0D0A0D0D0A420D0D0A0D0D0A430D0A

    Est ce qu'il y a quelque chose que j'ai fait mal, ou c'est parce que c'est moi

    EDIT:

    la SL c'est libstdc++ (gnu/gcc)

  2. #2
    screetch
    Invité(e)
    Par défaut
    sur quel OS?
    le symbole de fin de ligne, c'est \n
    ensuite la bibliothèque se charge, en mode texte (donc avec cout et wcout) de traduire ce \n dans la fin de ligne reglementaire sur la machine, soit \r sur les vieux mac, \n sous les bsd et unix recent et donc les nouveaux macs, et \r\n sous windows

    si tu ecrits \r\n, la bibliothèque ecrira donc \r\r\n.
    c'est en général invisible car \r est le retour au début de la ligne; quand on est au début de la ligne, c'est donc rien du tout.

  3. #3
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Oui, j'ai oublié, c'est sur windows.

    En fait, ce bout de code c'est juste pour reproduire simplement le problème que je décris, mais la séquence \r\n\r\n a proprement dite provient d'une longue chaine elle-même issue d'un fichier Unicode. Lorsque je redirige la sortie de ma console vers un fichier, j'ai un éditeur texte qui me saute 3 lignes (soit 5 passages à la ligne) alors que 2 autres n'en sautent qu'une (soit 2 passages à la ligne, donc normale).

    L'ennui c'est que ce premier éditeur supporte les trois types de fin de ligne (win, unix, mac), du coup avec ce genre de truc, il ne sait pas sur quel pied danser.

    Y'a-t-il par hasard une option qui me permettrait de dire à wcout de ne pas faire de surenchère*quand il rencontre une séquence de ce genre ? (sans que j'ai moi même besoin de filtrer la chaine).

    Merci.

  4. #4
    screetch
    Invité(e)
    Par défaut
    si tu lis depuis un fichier texte, le même mécanisme devrait s'appliquer et tes \r\n seraient lus comme un simple \n. Je regarderais donc a ta place pourquoi ca n'est pas fait et si ca peut être corrigé plutot comme ca.
    A mon avis tu utilises CreateFile pour ouvrir le fichier (qui ne fait pas cette conversion) et wcout pour afficher (qui effectue cette conversion) mais sans le code, c'est plutôt ma boule de cristal qui parle.

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Non, ma chaine je la reçois sous forme de paramètre, un pointeur sur un tableau de char et sa longueur, que je convertis en vue de son affichage. Je ne fais pas de manipulation directe sur le fichier source.

  6. #6
    screetch
    Invité(e)
    Par défaut
    dans ce cas, je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FILE*f=fdopen(0, "wb");
    fwide(f, 1);
    fwprintf(f, "\u000d\u000a");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. open avec comport
    Par Goldocrack dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/04/2009, 08h12
  2. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 04/02/2004, 15h25
  3. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39
  4. [Free Pascal] Comportement de Exec
    Par néo333 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 01/11/2003, 17h46
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo