OVH Cloud OVH Cloud

ostream UNICODE

1 réponse
Avatar
Philippe Mesmeur
hello everybody,

Je voudrais que mon code accepte aussi les stream UNICODE.

j'ai un composant qui ecrit des donnees dans un ostream.

void MyComponent::write(ostream mystream);

Ainsi, si je veux ecrire dans un fichier je lui passe une instance d'un
ofstream. Cet ofstream ouvre un fichier avec sa method "open" dont le
prototype est le suivant:
void open(const char *s, ios_base::openmode mode = ios_base::out |
ios_base::trunc);

Jusque la, tout va bien...

maintenant je voudrais trouver un stream similaire - utilisable avec ma
methode "write" (c'est a dire qui herite de "ostream") - et qui puisse
m'ouvrir un fichier dont le nom serait UNICODE (utile si mon composant
est utilise sur un ordinateur japonnais ;-)).

Si vous avez des pistes, merci de le les indiquer


Philippe

1 réponse

Avatar
kanze
Philippe Mesmeur wrote in message
news:...

Je voudrais que mon code accepte aussi les stream UNICODE.

j'ai un composant qui ecrit des donnees dans un ostream.

void MyComponent::write(ostream mystream);

Ainsi, si je veux ecrire dans un fichier je lui passe une instance
d'un ofstream. Cet ofstream ouvre un fichier avec sa method "open"
dont le prototype est le suivant:

void open(const char *s, ios_base::openmode mode = ios_base::out |
ios_base::trunc);

Jusque la, tout va bien...

maintenant je voudrais trouver un stream similaire - utilisable avec
ma methode "write" (c'est a dire qui herite de "ostream") - et qui
puisse m'ouvrir un fichier dont le nom serait UNICODE (utile si mon
composant est utilise sur un ordinateur japonnais ;-)).


Impossible en C++, au moins de façon portable.

Mais en fait, aussi, quel Unicode ? Je ne connais pas d'ordinateur qui
supporte les noms de fichiers en USC-4, c-à-d Unicode proprement dit. La
plupart des systèmes que je connais (mais pas Windows, d'après ce que
j'ai entendu dire) permet UTF-8. (Supporter conviendrait dans ce cas
seulement dans sa signification de tolérer.) C'est aussi ce qui sert
pour transmettre Unicode sur le réseau. Windows supporte UTF-16, je
crois ; c'est une autre façon d'encode une représentation de Unicode.

En ce qui concerne le C++, par définition, toute communication avec le
système se fait au moyen des « bytes », c-à-d des types char ou unsigned
char.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16