Bonjour,
Je voudrais un istream qui simule l'arrivée de messages qui sont déjà
entreposés dans une queue. Ces messages doivent arrivée à interval
régulier. J'ai testé le code suivant, mais je voudrais votre avis sur
l'utilisation du stringstream puisque je n'ai rien trouvé d'approprié
sur le net...:
queue<string> msg; //La queue de messages
stringstream iss; //Le stringstream
void tic() { //Fonction appellée à chaque interval
string mot = msg.front();
iss.clear(); //C'est ici que j'ai des doutes
iss << mot; //Et ici aussi, mais moins
msg.pop();
}
int main() {
string mot;
init();
while( 1 ) {
tic(); //Mettre à jour le flux
while( ! iss.eof() ) { //Tant que le flux n'est pas vide ?
iss >> mot; //Lire un mot dans le flux
if( mot == "fin" ) return 0;
cout<< mot << " " ;
}
cout << endl;
}
}
Par la même occasion, je voudrais un ostream qui absorbe tout ce qui lui
arrive sans les traiter (un peu comme le /dev/null sous unix)
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Samuel Krempp
le Sunday 26 October 2003 16:40, écrivit :
stringstream iss; //Le stringstream iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet contient stringstream, donc tu aurais pu le trouver avant de poster) contenant le message <3f6b9ee0$0$10416$
sinon, le plus simple (mais plus lent) est d'utiliser le stringstream 1 fois poury mettre qq chose, 1 fois pour en sortir qq chose, puis en prendre un autre la fois suivante.
le mélange de variables globales et de fonctions dans ton bout de code n'est pas recommandé, et j'aurais dû mal à montrer ce que je veux dire en ne modifiant que qques lignes.
mais si tu as vraiment l'ensemble des chaines de caractères sagement rangées dans un container, le mieux est évidemment de ne pas passer par un stringstream, mais de prendre directement les chaines..
Ce n'est probablement que du code artificiel que tu as écrit pour aborder qq chose, quelle est la situation réelle, en 2 mots ?
-- Sam
le Sunday 26 October 2003 16:40, not.provided@no.spam écrivit :
stringstream iss; //Le stringstream
iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet
contient stringstream, donc tu aurais pu le trouver avant de poster)
contenant le message
<3f6b9ee0$0$10416$626a54ce@news.free.fr>
sinon, le plus simple (mais plus lent) est d'utiliser le stringstream 1 fois
poury mettre qq chose, 1 fois pour en sortir qq chose, puis en prendre un
autre la fois suivante.
le mélange de variables globales et de fonctions dans ton bout de code n'est
pas recommandé, et j'aurais dû mal à montrer ce que je veux dire en ne
modifiant que qques lignes.
mais si tu as vraiment l'ensemble des chaines de caractères sagement rangées
dans un container, le mieux est évidemment de ne pas passer par un
stringstream, mais de prendre directement les chaines..
Ce n'est probablement que du code artificiel que tu as écrit pour aborder qq
chose, quelle est la situation réelle, en 2 mots ?
stringstream iss; //Le stringstream iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet contient stringstream, donc tu aurais pu le trouver avant de poster) contenant le message <3f6b9ee0$0$10416$
sinon, le plus simple (mais plus lent) est d'utiliser le stringstream 1 fois poury mettre qq chose, 1 fois pour en sortir qq chose, puis en prendre un autre la fois suivante.
le mélange de variables globales et de fonctions dans ton bout de code n'est pas recommandé, et j'aurais dû mal à montrer ce que je veux dire en ne modifiant que qques lignes.
mais si tu as vraiment l'ensemble des chaines de caractères sagement rangées dans un container, le mieux est évidemment de ne pas passer par un stringstream, mais de prendre directement les chaines..
Ce n'est probablement que du code artificiel que tu as écrit pour aborder qq chose, quelle est la situation réelle, en 2 mots ?
-- Sam
Benoit Rousseau
Samuel Krempp wrote:
le Sunday 26 October 2003 16:40, écrivit :
stringstream iss; //Le stringstream iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet contient stringstream, donc tu aurais pu le trouver avant de poster) contenant le message <3f6b9ee0$0$10416$ Comment fait on pour retrouver un message indexé de cette façon ?
le mélange de variables globales et de fonctions dans ton bout de code n'est pas recommandé, et j'aurais dû mal à montrer ce que je veux dire en ne modifiant que qques lignes. Ce n'est probablement que du code artificiel que tu as écrit pour aborder qq chose, quelle est la situation réelle, en 2 mots ?
C'est un code articifiel pour faire des tests. Les chaines sont récupérées depuis un fichier de log, mais je veux que le fichier de log ait me même comportement que le programme qui l'a généré et qu'il ne fournisse les messages qu'à intervale régulier
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Samuel Krempp wrote:
le Sunday 26 October 2003 16:40, not.provided@no.spam écrivit :
stringstream iss; //Le stringstream
iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet
contient stringstream, donc tu aurais pu le trouver avant de poster)
contenant le message
<3f6b9ee0$0$10416$626a54ce@news.free.fr>
Comment fait on pour retrouver un message indexé de cette façon ?
le mélange de variables globales et de fonctions dans ton bout de code n'est
pas recommandé, et j'aurais dû mal à montrer ce que je veux dire en ne
modifiant que qques lignes.
Ce n'est probablement que du code artificiel que tu as écrit pour aborder qq
chose, quelle est la situation réelle, en 2 mots ?
C'est un code articifiel pour faire des tests. Les chaines sont
récupérées depuis un fichier de log, mais je veux que le fichier de log
ait me même comportement que le programme qui l'a généré et qu'il ne
fournisse les messages qu'à intervale régulier
--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
stringstream iss; //Le stringstream iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet contient stringstream, donc tu aurais pu le trouver avant de poster) contenant le message <3f6b9ee0$0$10416$ Comment fait on pour retrouver un message indexé de cette façon ?
le mélange de variables globales et de fonctions dans ton bout de code n'est pas recommandé, et j'aurais dû mal à montrer ce que je veux dire en ne modifiant que qques lignes. Ce n'est probablement que du code artificiel que tu as écrit pour aborder qq chose, quelle est la situation réelle, en 2 mots ?
C'est un code articifiel pour faire des tests. Les chaines sont récupérées depuis un fichier de log, mais je veux que le fichier de log ait me même comportement que le programme qui l'a généré et qu'il ne fournisse les messages qu'à intervale régulier
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Samuel Krempp
le Friday 07 November 2003 10:17, écrivit :
Samuel Krempp wrote:
le Sunday 26 October 2003 16:40, écrivit :
stringstream iss; //Le stringstream iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet contient stringstream, donc tu aurais pu le trouver avant de poster) contenant le message
Comment fait on pour retrouver un message indexé de cette façon ?
ben normalement on clique dessus.. certains logiciels comprennent mieux <news:3f6b9ee0$0$10416$. ou alors le logiciel fournit cette possibilité dans son outil de recherche. (par champ message-id)
en fait le sujet est "ostreams et effacement", je me suis trompé ça contient ostream, pas stringstream, au temps pour moi. et ça date du 19 septembre.
C'est un code articifiel pour faire des tests. Les chaines sont récupérées depuis un fichier de log, mais je veux que le fichier de log ait me même comportement que le programme qui l'a généré et qu'il ne fournisse les messages qu'à intervale régulier
mais qu'est ce qui est testé ? je ne sais pas pquoi il est nécessaire de passer par un conteneur en mémoire, puis un stringstream, au lieu de simplement lire un fichier par morceau pour émuler la réception de messages, (fstream flog; while(...) { flog >> mot; ... } ), mais je pense que c'est probablement une mauvaise idée. si le but est de mesurer des performances, le stringstream va bcp fausser les choses, plus que "l'effet disque dur" (amoindri par le cache système, et le buffer du fstream) de la lecture directement dans le fstream
-- Sam
le Friday 07 November 2003 10:17, not.provided@no.spam écrivit :
Samuel Krempp wrote:
le Sunday 26 October 2003 16:40, not.provided@no.spam écrivit :
stringstream iss; //Le stringstream
iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet
contient stringstream, donc tu aurais pu le trouver avant de poster)
contenant le message
Comment fait on pour retrouver un message indexé de cette façon ?
ben normalement on clique dessus.. certains logiciels comprennent mieux
<news:3f6b9ee0$0$10416$626a54ce@news.free.fr>.
ou alors le logiciel fournit cette possibilité dans son outil de recherche.
(par champ message-id)
en fait le sujet est "ostreams et effacement", je me suis trompé ça contient
ostream, pas stringstream, au temps pour moi.
et ça date du 19 septembre.
C'est un code articifiel pour faire des tests. Les chaines sont
récupérées depuis un fichier de log, mais je veux que le fichier de log
ait me même comportement que le programme qui l'a généré et qu'il ne
fournisse les messages qu'à intervale régulier
mais qu'est ce qui est testé ? je ne sais pas pquoi il est nécessaire de
passer par un conteneur en mémoire, puis un stringstream, au lieu de
simplement lire un fichier par morceau pour émuler la réception de
messages, (fstream flog; while(...) { flog >> mot; ... } ), mais je pense
que c'est probablement une mauvaise idée.
si le but est de mesurer des performances, le stringstream va bcp fausser
les choses, plus que "l'effet disque dur" (amoindri par le cache système,
et le buffer du fstream) de la lecture directement dans le fstream
stringstream iss; //Le stringstream iss.clear(); //C'est ici que j'ai des doutes
si vraiment tu veux faire ça, tu peux lire le fil de discussion (le sujet contient stringstream, donc tu aurais pu le trouver avant de poster) contenant le message
Comment fait on pour retrouver un message indexé de cette façon ?
ben normalement on clique dessus.. certains logiciels comprennent mieux <news:3f6b9ee0$0$10416$. ou alors le logiciel fournit cette possibilité dans son outil de recherche. (par champ message-id)
en fait le sujet est "ostreams et effacement", je me suis trompé ça contient ostream, pas stringstream, au temps pour moi. et ça date du 19 septembre.
C'est un code articifiel pour faire des tests. Les chaines sont récupérées depuis un fichier de log, mais je veux que le fichier de log ait me même comportement que le programme qui l'a généré et qu'il ne fournisse les messages qu'à intervale régulier
mais qu'est ce qui est testé ? je ne sais pas pquoi il est nécessaire de passer par un conteneur en mémoire, puis un stringstream, au lieu de simplement lire un fichier par morceau pour émuler la réception de messages, (fstream flog; while(...) { flog >> mot; ... } ), mais je pense que c'est probablement une mauvaise idée. si le but est de mesurer des performances, le stringstream va bcp fausser les choses, plus que "l'effet disque dur" (amoindri par le cache système, et le buffer du fstream) de la lecture directement dans le fstream
-- Sam
Benoit Rousseau
Samuel Krempp wrote:
en fait le sujet est "ostreams et effacement", je me suis trompé ça contient ostream, pas stringstream, au temps pour moi. et ça date du 19 septembre.
C'est un code articifiel pour faire des tests. Les chaines sont récupérées depuis un fichier de log, mais je veux que le fichier de log ait me même comportement que le programme qui l'a généré et qu'il ne fournisse les messages qu'à intervale régulier
mais qu'est ce qui est testé ? je ne sais pas pquoi il est nécessaire de passer par un conteneur en mémoire, puis un stringstream, au lieu de simplement lire un fichier par morceau pour émuler la réception de messages, (fstream flog; while(...) { flog >> mot; ... } ), mais je pense que c'est probablement une mauvaise idée. si le but est de mesurer des performances, le stringstream va bcp fausser les choses, plus que "l'effet disque dur" (amoindri par le cache système, et le buffer du fstream) de la lecture directement dans le fstream
Il s'agit de rejouer une simulation.
C'est pour que le simulateur n'ait pas à se préoccuper des données. Une classe RobotIO retourne un istream et un ostream avec lesquels le simulateur interagit.
Lors de la simulation, un programme m'envoie des informations à des intervales de temps réguliers. Et dans ce cas, j'utilise un fstream normal (via un pipe). Ces informations sont stockées dans un fichier avec des info supplémentaires sur le temps (une chaine "tic" est ajoutée à la fin de chaque interval pour signaler que c'est la fin de la transition pour ce laps de temps).
Quand je rejoue, le simulateur doit penser qu'il s'agit toujours du même programme. Je lis donc le fichier jusqu'à "tic" à chaque fois que le programme m'envoie un signale. Le simulateur peut alors lire les informations dans un stringstream comme si elle venait du fstream à chaque interval de temps.
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Samuel Krempp wrote:
en fait le sujet est "ostreams et effacement", je me suis trompé ça contient
ostream, pas stringstream, au temps pour moi.
et ça date du 19 septembre.
C'est un code articifiel pour faire des tests. Les chaines sont
récupérées depuis un fichier de log, mais je veux que le fichier de log
ait me même comportement que le programme qui l'a généré et qu'il ne
fournisse les messages qu'à intervale régulier
mais qu'est ce qui est testé ? je ne sais pas pquoi il est nécessaire de
passer par un conteneur en mémoire, puis un stringstream, au lieu de
simplement lire un fichier par morceau pour émuler la réception de
messages, (fstream flog; while(...) { flog >> mot; ... } ), mais je pense
que c'est probablement une mauvaise idée.
si le but est de mesurer des performances, le stringstream va bcp fausser
les choses, plus que "l'effet disque dur" (amoindri par le cache système,
et le buffer du fstream) de la lecture directement dans le fstream
Il s'agit de rejouer une simulation.
C'est pour que le simulateur n'ait pas à se préoccuper des données.
Une classe RobotIO retourne un istream et un ostream avec lesquels le
simulateur interagit.
Lors de la simulation, un programme m'envoie des informations à des
intervales de temps réguliers. Et dans ce cas, j'utilise un fstream
normal (via un pipe). Ces informations sont stockées dans un fichier
avec des info supplémentaires sur le temps (une chaine "tic" est ajoutée
à la fin de chaque interval pour signaler que c'est la fin de la
transition pour ce laps de temps).
Quand je rejoue, le simulateur doit penser qu'il s'agit toujours du même
programme. Je lis donc le fichier jusqu'à "tic" à chaque fois que le
programme m'envoie un signale. Le simulateur peut alors lire les
informations dans un stringstream comme si elle venait du fstream à
chaque interval de temps.
--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
en fait le sujet est "ostreams et effacement", je me suis trompé ça contient ostream, pas stringstream, au temps pour moi. et ça date du 19 septembre.
C'est un code articifiel pour faire des tests. Les chaines sont récupérées depuis un fichier de log, mais je veux que le fichier de log ait me même comportement que le programme qui l'a généré et qu'il ne fournisse les messages qu'à intervale régulier
mais qu'est ce qui est testé ? je ne sais pas pquoi il est nécessaire de passer par un conteneur en mémoire, puis un stringstream, au lieu de simplement lire un fichier par morceau pour émuler la réception de messages, (fstream flog; while(...) { flog >> mot; ... } ), mais je pense que c'est probablement une mauvaise idée. si le but est de mesurer des performances, le stringstream va bcp fausser les choses, plus que "l'effet disque dur" (amoindri par le cache système, et le buffer du fstream) de la lecture directement dans le fstream
Il s'agit de rejouer une simulation.
C'est pour que le simulateur n'ait pas à se préoccuper des données. Une classe RobotIO retourne un istream et un ostream avec lesquels le simulateur interagit.
Lors de la simulation, un programme m'envoie des informations à des intervales de temps réguliers. Et dans ce cas, j'utilise un fstream normal (via un pipe). Ces informations sont stockées dans un fichier avec des info supplémentaires sur le temps (une chaine "tic" est ajoutée à la fin de chaque interval pour signaler que c'est la fin de la transition pour ce laps de temps).
Quand je rejoue, le simulateur doit penser qu'il s'agit toujours du même programme. Je lis donc le fichier jusqu'à "tic" à chaque fois que le programme m'envoie un signale. Le simulateur peut alors lire les informations dans un stringstream comme si elle venait du fstream à chaque interval de temps.
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Fabien LE LEZ
On Fri, 07 Nov 2003 13:11:06 +0100, Samuel Krempp wrote:
Comment fait on pour retrouver un message indexé de cette façon ?
ben normalement on clique dessus.. certains logiciels comprennent mieux <news:3f6b9ee0$0$10416$.
Au pire, on copie le message-id dans les archives de Google.
-- ;-)
On Fri, 07 Nov 2003 13:11:06 +0100, Samuel Krempp
<krempp@crans.truc.en.trop.ens-cachan.fr> wrote:
Comment fait on pour retrouver un message indexé de cette façon ?
ben normalement on clique dessus.. certains logiciels comprennent mieux
<news:3f6b9ee0$0$10416$626a54ce@news.free.fr>.
Au pire, on copie le message-id dans les archives de Google.