Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
729 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  environnement MinGw / Windows avec caractères accentués

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

environnement MinGw / Windows avec caractères accentués

n°2267030
godbeni
Posté le 05-10-2015 à 14:36:13  profilanswer
 

Bonjour,
 
Je travaille sur du code C++ d’une librairie utilisant des flux d’entrées et de sorties ifstream et ofstream. L’environnement d’exécution ciblé est Windows et le compilateur est MinGw g++. Le problème est que dès qu’il y a des caractères spéciaux (accents par exemple), mon code plante car l’UTF16 de windows n’est pas gérés par ces flux. Après moultes recherche sur internet, je ne trouve pas de solution à mon problème pourtant basique. Mes besoins seraient couverts par un code couvrant l’exemple suivant :
- Passage d’un chemin d’un fichier en argument de ligne de commande contenant des accents (ex : « C:\\temp\\nomaccentué.txt »),
- Lecture du contenu de fichier contenant une ligne décrivant un fichier accentué lui aussi (ex : « C:\\temp\\nomaccentué2.txt »),  
- Ecriture dans ce fichier d’une chaîne de caractères avec elle aussi des caractères accentués.
Dois-je nécessairement passé par l’API win32 ?  
 
Vous remerciant par avance.

mood
Publicité
Posté le 05-10-2015 à 14:36:13  profilanswer
 

n°2267032
Farian
Posté le 05-10-2015 à 14:43:20  profilanswer
 

Bonjour ! Et en passant par des wifstream/wofstream ? Logiquement, ils sont prévus pour gérer les caractères de plus d'un octet.
 
Bonne continuation !

n°2267035
godbeni
Posté le 05-10-2015 à 15:07:20  profilanswer
 

Farian a écrit :

Bonjour ! Et en passant par des wifstream/wofstream ? Logiquement, ils sont prévus pour gérer les caractères de plus d'un octet.
 
Bonne continuation !


 
Malheuresement on ne peut pas instancier wifstream/wofstream avec des wstring

n°2267038
Farian
Posté le 05-10-2015 à 15:43:59  profilanswer
 

C'est possible, je n'ai utilisé que les wstring et wcout/wcin.
 
Mais c'est étonnant que l'ensemble ne soit pas cohérent, la STL ne nous avait pas habitué à de tels comportements.
 
Je suis déçu  :??:


Message édité par Farian le 05-10-2015 à 16:14:31
n°2267043
tpierron
Posté le 05-10-2015 à 16:19:41  profilanswer
 

godbeni a écrit :


 
Malheuresement on ne peut pas instancier wifstream/wofstream avec des wstring


Mouais, l'API d'ouverture des fichiers est extrêmement mal foutue sous Windows: avec Visual Studio, Microsoft a rajouté une surcharge a fstream::open pour accepter des const wchar_t * en nom de fichier, surcharge qui n'a jamais été standardisée.
 
wifstream c'est pour lire du contenu unicode, les noms de fichiers n'accepteront que des const char *.
 
Aucune API pour transmettre un descripteur bas niveau, histoire d'ouvrir le fichier par toi même, façon fdopen() de stdio.
 
Convertir le nom en UTF-8 ne fonctionnera pas non plus, faudra passer par l'encodage ANSI (ACP) et serrer les fesses pour que tous les caractères rentrent là dedans.
 
Sinon, il y a la bibliothèque boost qui supporte les noms unicode.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  environnement MinGw / Windows avec caractères accentués

 

Sujets relatifs
Problème de migration du fichier .htpasswd de Linux a Windows.[MySQL] Comment distinguer les caractères accentués
pble mail() SMTP avec easyphp sous windows.Mais où sont donc passées les Windows Form en C++?
Requête, données multiples séparées par des caractèressauvegarde d'environnement .bat / powershell
Affichage caractères spéciaux pose problèmesWindows et API Windows
Expression regulière avec caractères spéciaux 
Plus de sujets relatifs à : environnement MinGw / Windows avec caractères accentués


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR