Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cin ne prend qu'un caractère sur deux

4 réponses
Avatar
fenkys
Bonjour,

Avant de donner plus de détail, je commence par donner un résumé car
j'ignore si le problème vient du C++ ou d'ailleurs.

J'ai donc un programme en fastcgi (qui utlise la libfcgi officielle) qui
récupère une chaine sur le flux d'entrée.

Lors de son activation, le programme détourne le flux d'entrée standard
et le flux de sortie vers un socket. Ma page web envoie une chaine de
caractère dans le socket et je lis le flux d'entrée que je place dans
une std::string au moyen d'un getline(std::cin, std::string &);

Chez moi en local ca marche impeccable. Mais sur le serveur web final,
ma string ne contient que les lettres de rang impair de la chaine de
départ.

Petite recherche sur google : neant. Mais autour de moi des gens
connaissent le problèmes, mais ne savent pas comment le résoudre.

A votre avis, dans quelle direction dois je cherche pour comprendre ce
qui se passe ?


Merci pour votre aide.


Laurent

4 réponses

Avatar
Fabien LE LEZ
On Thu, 02 Aug 2007 23:17:58 +0200, fenkys :

Chez moi en local ca marche impeccable.


Avec la même version du même serveur web ?

Mais sur le serveur web final,
ma string ne contient que les lettres de rang impair de la chaine de
départ.


Une cause possible de ce symptôme est que ton programme s'attend à
lire des caractères sur 16 bits, alors qu'on lui passe des caractères
sur 8 bits.

Avatar
fenkys
Fabien LE LEZ wrote:
On Thu, 02 Aug 2007 23:17:58 +0200, fenkys :


Chez moi en local ca marche impeccable.



Avec la même version du même serveur web ?


Apache 2.2 sur le nouveau serveur, 2.0 sur mon serveur perso.


Mais sur le serveur web final,
ma string ne contient que les lettres de rang impair de la chaine de
départ.



Une cause possible de ce symptôme est que ton programme s'attend à
lire des caractères sur 16 bits, alors qu'on lui passe des caractères
sur 8 bits.


J'étais arrivé à cette conclusion. Mais je suis incapable d'aller plus
loin. Je ne sais pas si je dois agir sur le programme, la configuration
du serveur, ou encore ailleurs.


LD


Avatar
fenkys
fenkys wrote:
Bonjour,

Avant de donner plus de détail, je commence par donner un résumé car
j'ignore si le problème vient du C++ ou d'ailleurs.

J'ai donc un programme en fastcgi (qui utlise la libfcgi officielle) qui
récupère une chaine sur le flux d'entrée.

Lors de son activation, le programme détourne le flux d'entrée standard
et le flux de sortie vers un socket. Ma page web envoie une chaine de
caractère dans le socket et je lis le flux d'entrée que je place dans
une std::string au moyen d'un getline(std::cin, std::string &);

Chez moi en local ca marche impeccable. Mais sur le serveur web final,
ma string ne contient que les lettres de rang impair de la chaine de
départ.


J'ai trouvé un moyen de contourner le problème. J'utilise la fonction
int istream::get() pour lire le flux entrant caractère par caractère. Et
je lis maintenant toutes les lettres.

Reste que je ne comprend pas ce qui se passe avec les getlines (je mets
au pluriel car toutes les versions de getline on le même problème).

A+

LD

Avatar
James Kanze
On Aug 4, 6:00 pm, fenkys wrote:

[...]
J'ai trouvé un moyen de contourner le problème. J'utilise la fonction
int istream::get() pour lire le flux entrant caractère par caractère. Et
je lis maintenant toutes les lettres.

Reste que je ne comprend pas ce qui se passe avec les getlines (je mets
au pluriel car toutes les versions de getline on le même problème).


D'autant plus que getline doit se servir de istream::get(), ou de son
equivalent.

--
James Kanze (GABI Software) email:james.kanze:gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34