Bonjour,
mon problème : une classe permettan de lire et écrire dans un même
fichier.
class c_File
{
public :
fstream fs;
.....
public :
...
friend void operator >> (c_File& ,string& );
friend void operator << (c_File& ,const char * );
...
}
void operator <<(c_File& myFile, const char* out )
{
myFile.fs<<out;
}
void operator >>(c_File& myFile, string& out)
{
int c;
string s; // Ich weiss !! ich könnte getline nehmen!!!
getline(myFile.fs,s);
out=s;
}
main.C
{
c_File oFile;
string s;
oFile.OpenFile("hugo.txt",ios::in|ios::out|ios::app );
oFile<<"hey baby!";
oFile>>s;
cout<<s<<endl;
}
Le résultat est :
(A l'origine le fichier est vide)
a l'écran : RIEN dans le fichier : hey baby!
pourquoi RIEN ? (ne s'affiche à l'écran)
J 'ai essayé avec, entre l'appel entre les deux operateur << et >>, les
methode seekp/seekg(0,ios::end), flush et sync ...
rien à faire.
A mon avis c'est un bogue de xlC ?
unix . aix 5.2 xlC version 6
merci beaucoup pour votre aide.
Bonjour,
mon problème : une classe permettan de lire et écrire dans un même
fichier.
class c_File
{
public :
fstream fs;
.....
public :
...
friend void operator >> (c_File& ,string& );
friend void operator << (c_File& ,const char * );
...
}
void operator <<(c_File& myFile, const char* out )
{
myFile.fs<<out;
}
void operator >>(c_File& myFile, string& out)
{
int c;
string s; // Ich weiss !! ich könnte getline nehmen!!!
getline(myFile.fs,s);
out=s;
}
main.C
{
c_File oFile;
string s;
oFile.OpenFile("hugo.txt",ios::in|ios::out|ios::app );
oFile<<"hey baby!";
oFile>>s;
cout<<s<<endl;
}
Le résultat est :
(A l'origine le fichier est vide)
a l'écran : RIEN dans le fichier : hey baby!
pourquoi RIEN ? (ne s'affiche à l'écran)
J 'ai essayé avec, entre l'appel entre les deux operateur << et >>, les
methode seekp/seekg(0,ios::end), flush et sync ...
rien à faire.
A mon avis c'est un bogue de xlC ?
unix . aix 5.2 xlC version 6
merci beaucoup pour votre aide.
Bonjour,
mon problème : une classe permettan de lire et écrire dans un même
fichier.
class c_File
{
public :
fstream fs;
.....
public :
...
friend void operator >> (c_File& ,string& );
friend void operator << (c_File& ,const char * );
...
}
void operator <<(c_File& myFile, const char* out )
{
myFile.fs<<out;
}
void operator >>(c_File& myFile, string& out)
{
int c;
string s; // Ich weiss !! ich könnte getline nehmen!!!
getline(myFile.fs,s);
out=s;
}
main.C
{
c_File oFile;
string s;
oFile.OpenFile("hugo.txt",ios::in|ios::out|ios::app );
oFile<<"hey baby!";
oFile>>s;
cout<<s<<endl;
}
Le résultat est :
(A l'origine le fichier est vide)
a l'écran : RIEN dans le fichier : hey baby!
pourquoi RIEN ? (ne s'affiche à l'écran)
J 'ai essayé avec, entre l'appel entre les deux operateur << et >>, les
methode seekp/seekg(0,ios::end), flush et sync ...
rien à faire.
A mon avis c'est un bogue de xlC ?
unix . aix 5.2 xlC version 6
merci beaucoup pour votre aide.
mon problème : une classe permettan de lire et écrire dans un même fichier.
class c_File
{
public :
fstream fs;
.....
public :
...
friend void operator >> (c_File& ,string& );
friend void operator << (c_File& ,const char * );
...
}
void operator <<(c_File& myFile, const char* out )
{
myFile.fs<<out;
}
void operator >>(c_File& myFile, string& out)
{
int c;
string s; // Ich weiss !! ich könnte getline nehmen!!!
getline(myFile.fs,s);
out=s;
}
main.C
{
c_File oFile;
string s;
oFile.OpenFile("hugo.txt",ios::in|ios::out|ios::app );
oFile<<"hey baby!";
oFile>>s;
cout<<s<<endl;
}
Le résultat est :
(A l'origine le fichier est vide)
a l'écran : RIEN dans le fichier : hey baby!
pourquoi RIEN ? (ne s'affiche à l'écran)
J 'ai essayé avec, entre l'appel entre les deux operateur << et >>,
les methode seekp/seekg(0,ios::end), flush et sync ...
rien à faire.
A mon avis c'est un bogue de xlC ?
unix . aix 5.2 xlC version 6
mon problème : une classe permettan de lire et écrire dans un même fichier.
class c_File
{
public :
fstream fs;
.....
public :
...
friend void operator >> (c_File& ,string& );
friend void operator << (c_File& ,const char * );
...
}
void operator <<(c_File& myFile, const char* out )
{
myFile.fs<<out;
}
void operator >>(c_File& myFile, string& out)
{
int c;
string s; // Ich weiss !! ich könnte getline nehmen!!!
getline(myFile.fs,s);
out=s;
}
main.C
{
c_File oFile;
string s;
oFile.OpenFile("hugo.txt",ios::in|ios::out|ios::app );
oFile<<"hey baby!";
oFile>>s;
cout<<s<<endl;
}
Le résultat est :
(A l'origine le fichier est vide)
a l'écran : RIEN dans le fichier : hey baby!
pourquoi RIEN ? (ne s'affiche à l'écran)
J 'ai essayé avec, entre l'appel entre les deux operateur << et >>,
les methode seekp/seekg(0,ios::end), flush et sync ...
rien à faire.
A mon avis c'est un bogue de xlC ?
unix . aix 5.2 xlC version 6
mon problème : une classe permettan de lire et écrire dans un même fichier.
class c_File
{
public :
fstream fs;
.....
public :
...
friend void operator >> (c_File& ,string& );
friend void operator << (c_File& ,const char * );
...
}
void operator <<(c_File& myFile, const char* out )
{
myFile.fs<<out;
}
void operator >>(c_File& myFile, string& out)
{
int c;
string s; // Ich weiss !! ich könnte getline nehmen!!!
getline(myFile.fs,s);
out=s;
}
main.C
{
c_File oFile;
string s;
oFile.OpenFile("hugo.txt",ios::in|ios::out|ios::app );
oFile<<"hey baby!";
oFile>>s;
cout<<s<<endl;
}
Le résultat est :
(A l'origine le fichier est vide)
a l'écran : RIEN dans le fichier : hey baby!
pourquoi RIEN ? (ne s'affiche à l'écran)
J 'ai essayé avec, entre l'appel entre les deux operateur << et >>,
les methode seekp/seekg(0,ios::end), flush et sync ...
rien à faire.
A mon avis c'est un bogue de xlC ?
unix . aix 5.2 xlC version 6
En fait, je crois que ton problème vient d'une mauvaise compréhension de
comment fonction un fstream. Un fstream ne maintient qu'un seul pointeur
de position, qui sert à la fois à l'écriture et à la lecture.
--
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
En fait, je crois que ton problème vient d'une mauvaise compréhension de
comment fonction un fstream. Un fstream ne maintient qu'un seul pointeur
de position, qui sert à la fois à l'écriture et à la lecture.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
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
En fait, je crois que ton problème vient d'une mauvaise compréhension de
comment fonction un fstream. Un fstream ne maintient qu'un seul pointeur
de position, qui sert à la fois à l'écriture et à la lecture.
--
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
wrote:En fait, je crois que ton problème vient d'une mauvaise
compréhension de comment fonction un fstream. Un fstream ne
maintient qu'un seul pointeur de position, qui sert à la fois à
l'écriture et à la lecture.
Justement à ce sujet (plusieur pointeurs) :
Lors d'un cours de parseur, on avait étudié un parseur assez simple
(en Haskell), mais efficace.
Il lancait plusieurs "threads" (simulés) en parallèle pour parser
toutes les différentes possibilités. Un thread qui n'acceptaient pas
les caractères du flux abandonnaient rapidement, alors que celui qui
acceptait la solution continuait gaiment sa route et lançait d'autres
threads pour parser la suite.
On pourrait voir ça en C++ comme un flux avec plusieurs pointeurs, non ?
Evidemment, il faudrait programmer toute la librairie, et Haskell
était plus adapté à ce genre de résolution (La paresse éliminant le
début du flux qui n'était plus nécessaire et la facilité de créer un
langage "embarqué" pour les "threads" étaient bien des avantages).
Est ce que cette idée d'appliquer ca au C++ est complétement idiote ?
kanze@gabi-soft.fr wrote:
En fait, je crois que ton problème vient d'une mauvaise
compréhension de comment fonction un fstream. Un fstream ne
maintient qu'un seul pointeur de position, qui sert à la fois à
l'écriture et à la lecture.
Justement à ce sujet (plusieur pointeurs) :
Lors d'un cours de parseur, on avait étudié un parseur assez simple
(en Haskell), mais efficace.
Il lancait plusieurs "threads" (simulés) en parallèle pour parser
toutes les différentes possibilités. Un thread qui n'acceptaient pas
les caractères du flux abandonnaient rapidement, alors que celui qui
acceptait la solution continuait gaiment sa route et lançait d'autres
threads pour parser la suite.
On pourrait voir ça en C++ comme un flux avec plusieurs pointeurs, non ?
Evidemment, il faudrait programmer toute la librairie, et Haskell
était plus adapté à ce genre de résolution (La paresse éliminant le
début du flux qui n'était plus nécessaire et la facilité de créer un
langage "embarqué" pour les "threads" étaient bien des avantages).
Est ce que cette idée d'appliquer ca au C++ est complétement idiote ?
wrote:En fait, je crois que ton problème vient d'une mauvaise
compréhension de comment fonction un fstream. Un fstream ne
maintient qu'un seul pointeur de position, qui sert à la fois à
l'écriture et à la lecture.
Justement à ce sujet (plusieur pointeurs) :
Lors d'un cours de parseur, on avait étudié un parseur assez simple
(en Haskell), mais efficace.
Il lancait plusieurs "threads" (simulés) en parallèle pour parser
toutes les différentes possibilités. Un thread qui n'acceptaient pas
les caractères du flux abandonnaient rapidement, alors que celui qui
acceptait la solution continuait gaiment sa route et lançait d'autres
threads pour parser la suite.
On pourrait voir ça en C++ comme un flux avec plusieurs pointeurs, non ?
Evidemment, il faudrait programmer toute la librairie, et Haskell
était plus adapté à ce genre de résolution (La paresse éliminant le
début du flux qui n'était plus nécessaire et la facilité de créer un
langage "embarqué" pour les "threads" étaient bien des avantages).
Est ce que cette idée d'appliquer ca au C++ est complétement idiote ?
writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
kanze@gabi-soft.fr writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
kanze@gabi-soft.fr writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
Jean-Marc Bourguet wrote in message
news:...writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
En effet, ça a l'air intéressant. Mais quel rapport avec sa question de
base : un flux (fstream) qui maintenait plusieurs pointeurs différents
(un par thread) ?
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
Si les actions sémantiques ne sont pas irrévocables, je ne vois pas trop
de problème. Dans beaucoup de cas, l'action sémantique ne fait que
construire un arbre -- dans ce cas-là, c'est facile à jeter l'arbre
quand le thread échoue, et ne prendre en compte que l'arbre d'un des
threads à la fin.
Côté gestion des erreurs, c'est autre chose.
Jean-Marc Bourguet <jm@bourguet.org> wrote in message
news:<pxb7k1cbm09.fsf@news.bourguet.org>...
kanze@gabi-soft.fr writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
En effet, ça a l'air intéressant. Mais quel rapport avec sa question de
base : un flux (fstream) qui maintenait plusieurs pointeurs différents
(un par thread) ?
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
Si les actions sémantiques ne sont pas irrévocables, je ne vois pas trop
de problème. Dans beaucoup de cas, l'action sémantique ne fait que
construire un arbre -- dans ce cas-là, c'est facile à jeter l'arbre
quand le thread échoue, et ne prendre en compte que l'arbre d'un des
threads à la fin.
Côté gestion des erreurs, c'est autre chose.
Jean-Marc Bourguet wrote in message
news:...writes:
[...]
Bizarre comme on peut avoir des idees differentes. Quand il a parle
de threads simulees differentes, j'ai imagine la structure suivante:
on lit un symbole qu'on passe a tous les analyseurs gramaticaux
actifs. En recevant un symbole, un analyseur peut le refuser (et donc
se detruire) ou l'accepter. S'il l'accepte et qu'il y a un choix,
l'analyseur se clone pour poursuivre tous les choix simultanements.
En effet, ça a l'air intéressant. Mais quel rapport avec sa question de
base : un flux (fstream) qui maintenait plusieurs pointeurs différents
(un par thread) ?
C'est une structure capable d'analyser toutes les grammaires non
ambigues. Il y a deux problemes: la gestion des actions semantiques
et la gestion des erreurs.
Si les actions sémantiques ne sont pas irrévocables, je ne vois pas trop
de problème. Dans beaucoup de cas, l'action sémantique ne fait que
construire un arbre -- dans ce cas-là, c'est facile à jeter l'arbre
quand le thread échoue, et ne prendre en compte que l'arbre d'un des
threads à la fin.
Côté gestion des erreurs, c'est autre chose.