Bonjour,
j'ai commencer la programmation en c++ Il y a de ca un bon moment. j'ai
apprit beaucoup. En ce moment mon programme doit lire un fichier de
configuration, et lire et interpr=E9t=E9 ce qui a dedans. le fichier est
construi comme ceci:
BOn, les commentaire je susi capable de les enlever, les espace aussi,
mais a l'endroit que j'ai le plus de difficult=E9, est de stoker dans un
tableau les option =3D option; je bloque car=E9ment a cette place. Je vais
vous donner mon code, et serais bien gentil de m'aider un peu.
m_Error est la variable qui transmet les message d'erreur.
code:
int Conf::LoadConfig()
{
//cr=E9e un pointeur
FILE *FichConf;
int Carac;
int i;
int j,y;
int CONF[120][120];
//ouverture du fichier de configuration
if ((FichConf =3D fopen("config.conf", "r")) =3D=3D NULL)
{
m_Error =3D "Impossible d'ouvrir le fichier de Configuration.";
}
//Interpretation de la configuration
else {
while ((Carac =3D fgetc(FichConf)) !=3D EOF)
{
//SI c'est un commentaire
if (i =3D=3D 1){
if (Carac !=3D '\n'){
continue;
}
else{
i=3D0;
continue;
}
}
//S=E9paration des caractere
switch (Carac) {
//Commentaire
case '#' :
i =3D 1;
continue;
//espace
case ' ':
continue;
//d=E9limiteur de fonction
case '=3D':
i =3D 2;
continue;
Merci de vos réponce. Je crois que j'ai recu l'information néssésaire pour réusir mon bout de code:) Votre problème ressemble à celui de la lecture des INI "à la Windows
3.x". Donnez à Google tout ou partie de: c++ class library read write "ini files" Vous trouverez peut-être le travail tout fait ou du code source pour un avoir un truc réutilisable (dépend de vos contraintes). J'utilise souvent TIniFile de Borland VCL/CLX, très pratique mais réservé à Delphi/C++Builder/Kylix.
-- Pour répondre directement: enlever une lettre sur deux wwaannaaddoooo -> wanadoo
Pierre Maurette
Merci de vos réponce. Je crois que j'ai recu l'information
néssésaire pour réusir mon bout de code:)
Votre problème ressemble à celui de la lecture des INI "à la Windows
3.x".
Donnez à Google tout ou partie de:
c++ class library read write "ini files"
Vous trouverez peut-être le travail tout fait ou du code source pour un
avoir un truc réutilisable (dépend de vos contraintes).
J'utilise souvent TIniFile de Borland VCL/CLX, très pratique mais
réservé à Delphi/C++Builder/Kylix.
--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo
Merci de vos réponce. Je crois que j'ai recu l'information néssésaire pour réusir mon bout de code:) Votre problème ressemble à celui de la lecture des INI "à la Windows
3.x". Donnez à Google tout ou partie de: c++ class library read write "ini files" Vous trouverez peut-être le travail tout fait ou du code source pour un avoir un truc réutilisable (dépend de vos contraintes). J'utilise souvent TIniFile de Borland VCL/CLX, très pratique mais réservé à Delphi/C++Builder/Kylix.
-- Pour répondre directement: enlever une lettre sur deux wwaannaaddoooo -> wanadoo
Pierre Maurette
Luc Hermitte
Hello.
wrote in news:1117729472.725574.27470 @g47g2000cwa.googlegroups.com:
Les MFC, ça existe encore ? Je croyais que même Microsoft faisait mieux maintenant.
Il semblerait que cela soit encore maintenu finalement. (si je m'en tiens au programme des journées C++ qu'ils ont organisées)
[...] De toute façon, avec std::ifstream, std::string et boost::regex, c'est l'affaire de quelque lignes, tout au plus.
Et avec boost.program_option encore plus "simple". (et cela se combine assez bien avec les buffers filtrants :))
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Hello.
kanze@gabi-soft.fr wrote in news:1117729472.725574.27470
@g47g2000cwa.googlegroups.com:
Les MFC, ça existe encore ? Je croyais que même Microsoft
faisait mieux maintenant.
Il semblerait que cela soit encore maintenu finalement.
(si je m'en tiens au programme des journées C++ qu'ils ont organisées)
[...]
De toute façon, avec std::ifstream, std::string et boost::regex,
c'est l'affaire de quelque lignes, tout au plus.
Et avec boost.program_option encore plus "simple". (et cela se combine
assez bien avec les buffers filtrants :))
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
Désolé pour la digression, mais y a-t-il des liens entre les regex façon Perl (comme ci-dessus) et les regex POSIX ?
J'ai l'impression que ce sont deux langages différents qui ont le même nom...
Pas vraiment. La base est rigueureusement identique. Mais même à l'intérieur de Posix, tu as des ajouts que ne comprend que certains programmes, et pas d'autres. (Je crois, d'ailleurs, qu'une des motivations au début de Perl, c'était de pouvoir tout faire de ce qu'on fait à partir d'un shell Unix, mais avec une syntaxe d'expression rationnelle unique:-).)
Il y a une mode Posix pour les expressions rationnelles de Boost. Tu mets l'option qu'il faut, et il interprète comme Posix. Sinon, les différences par rapport à ce u'il y a la-dessus sont principaliement d'une part la présence des s et des w, qui sont simplement des raccourcis pour [:space:] et (grosso modo) [[:alnum:]_], et la sémantique des différents parenthèses : sous Posix, (...) regroupe et sauvegarde ce qui en correspond, et ( et ) sont des caractères normaux, tandis qu'avec Boost, (...) regroupe et sauvegarde, il faut ( et ) pour chercher un parenthèse, et (?:...) regroupe sans le sauvegarde. Si je voulais la syntaxe Posix, je pourrais écrire quelque chose comme :
Dans ce cas-là, boost_match va aussi sauver le contenu des commentaires (mais je ne suis pas obligé à le lire, si ça ne m'intéresse pas).
En passant, pour ce qui concerne la compatibilité Posix, Boost offre basic, extended, awk, grep, egrep et sed -- selon quel variant Posix on veut émuler:-). (Formellement, Posix définit deux formes : « basic » et « extended ». Mais dans la documentation de certains programmes, il y introduit des variations sur ces formes.)
-- James Kanze GABI Software 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
Désolé pour la digression, mais y a-t-il des liens entre les
regex façon Perl (comme ci-dessus) et les regex POSIX ?
J'ai l'impression que ce sont deux langages différents qui ont
le même nom...
Pas vraiment. La base est rigueureusement identique. Mais même à
l'intérieur de Posix, tu as des ajouts que ne comprend que
certains programmes, et pas d'autres. (Je crois, d'ailleurs,
qu'une des motivations au début de Perl, c'était de pouvoir tout
faire de ce qu'on fait à partir d'un shell Unix, mais avec une
syntaxe d'expression rationnelle unique:-).)
Il y a une mode Posix pour les expressions rationnelles de
Boost. Tu mets l'option qu'il faut, et il interprète comme
Posix. Sinon, les différences par rapport à ce u'il y a
la-dessus sont principaliement d'une part la présence des s et
des w, qui sont simplement des raccourcis pour [:space:] et
(grosso modo) [[:alnum:]_], et la sémantique des différents
parenthèses : sous Posix, (...) regroupe et sauvegarde ce qui
en correspond, et ( et ) sont des caractères normaux, tandis
qu'avec Boost, (...) regroupe et sauvegarde, il faut ( et )
pour chercher un parenthèse, et (?:...) regroupe sans le
sauvegarde. Si je voulais la syntaxe Posix, je pourrais écrire
quelque chose comme :
Dans ce cas-là, boost_match va aussi sauver le contenu des
commentaires (mais je ne suis pas obligé à le lire, si ça ne
m'intéresse pas).
En passant, pour ce qui concerne la compatibilité Posix, Boost
offre basic, extended, awk, grep, egrep et sed -- selon quel
variant Posix on veut émuler:-). (Formellement, Posix définit
deux formes : « basic » et « extended ». Mais dans la
documentation de certains programmes, il y introduit des
variations sur ces formes.)
--
James Kanze GABI Software
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
Désolé pour la digression, mais y a-t-il des liens entre les regex façon Perl (comme ci-dessus) et les regex POSIX ?
J'ai l'impression que ce sont deux langages différents qui ont le même nom...
Pas vraiment. La base est rigueureusement identique. Mais même à l'intérieur de Posix, tu as des ajouts que ne comprend que certains programmes, et pas d'autres. (Je crois, d'ailleurs, qu'une des motivations au début de Perl, c'était de pouvoir tout faire de ce qu'on fait à partir d'un shell Unix, mais avec une syntaxe d'expression rationnelle unique:-).)
Il y a une mode Posix pour les expressions rationnelles de Boost. Tu mets l'option qu'il faut, et il interprète comme Posix. Sinon, les différences par rapport à ce u'il y a la-dessus sont principaliement d'une part la présence des s et des w, qui sont simplement des raccourcis pour [:space:] et (grosso modo) [[:alnum:]_], et la sémantique des différents parenthèses : sous Posix, (...) regroupe et sauvegarde ce qui en correspond, et ( et ) sont des caractères normaux, tandis qu'avec Boost, (...) regroupe et sauvegarde, il faut ( et ) pour chercher un parenthèse, et (?:...) regroupe sans le sauvegarde. Si je voulais la syntaxe Posix, je pourrais écrire quelque chose comme :
Dans ce cas-là, boost_match va aussi sauver le contenu des commentaires (mais je ne suis pas obligé à le lire, si ça ne m'intéresse pas).
En passant, pour ce qui concerne la compatibilité Posix, Boost offre basic, extended, awk, grep, egrep et sed -- selon quel variant Posix on veut émuler:-). (Formellement, Posix définit deux formes : « basic » et « extended ». Mais dans la documentation de certains programmes, il y introduit des variations sur ces formes.)
-- James Kanze GABI Software 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
kanze
Luc Hermitte wrote:
[...] De toute façon, avec std::ifstream, std::string et boost::regex, c'est l'affaire de quelque lignes, tout au plus.
Et avec boost.program_option encore plus "simple". (et cela se combine assez bien avec les buffers filtrants :))
C'est un package Boost que je n'ai pas encore eu le temps de régarder.
Je voulais citer les buffers filtrants, mais je ne les ai pas trouvé sur la page de Boost. Je sais qu'ils existe, parce qu'on en a parlé dans clc++m -- j'y ai même jeté un coup d'oeil en suivant le lien indiqué, et ils m'ont fait une très bonne impression. (Beaucoup mieux que les petits bricolages que je proposais à ma propre site.) Mais quand je vais à http://www.boost.org/libs/libraries.htm, ils n'y sont pas.
-- James Kanze GABI Software 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
Luc Hermitte wrote:
[...]
De toute façon, avec std::ifstream, std::string et
boost::regex, c'est l'affaire de quelque lignes, tout au
plus.
Et avec boost.program_option encore plus "simple". (et cela se
combine assez bien avec les buffers filtrants :))
C'est un package Boost que je n'ai pas encore eu le temps de
régarder.
Je voulais citer les buffers filtrants, mais je ne les ai pas
trouvé sur la page de Boost. Je sais qu'ils existe, parce qu'on
en a parlé dans clc++m -- j'y ai même jeté un coup d'oeil en
suivant le lien indiqué, et ils m'ont fait une très bonne
impression. (Beaucoup mieux que les petits bricolages que je
proposais à ma propre site.) Mais quand je vais à
http://www.boost.org/libs/libraries.htm, ils n'y sont pas.
--
James Kanze GABI Software
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
[...] De toute façon, avec std::ifstream, std::string et boost::regex, c'est l'affaire de quelque lignes, tout au plus.
Et avec boost.program_option encore plus "simple". (et cela se combine assez bien avec les buffers filtrants :))
C'est un package Boost que je n'ai pas encore eu le temps de régarder.
Je voulais citer les buffers filtrants, mais je ne les ai pas trouvé sur la page de Boost. Je sais qu'ils existe, parce qu'on en a parlé dans clc++m -- j'y ai même jeté un coup d'oeil en suivant le lien indiqué, et ils m'ont fait une très bonne impression. (Beaucoup mieux que les petits bricolages que je proposais à ma propre site.) Mais quand je vais à http://www.boost.org/libs/libraries.htm, ils n'y sont pas.
-- James Kanze GABI Software 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
Luc Hermitte
wrote in news:1117783259.342562.305570 @g14g2000cwa.googlegroups.com:
Je voulais citer les buffers filtrants, mais je ne les ai pas trouvé sur la page de Boost. Je sais qu'ils existe, parce qu'on en a parlé dans clc++m -- j'y ai même jeté un coup d'oeil en suivant le lien indiqué, et ils m'ont fait une très bonne impression. (Beaucoup mieux que les petits bricolages que je proposais à ma propre site.) Mais quand je vais à http://www.boost.org/libs/libraries.htm, ils n'y sont pas.
J'en avais trouvé une implémentation dans les fichiers associés à la mailing-list qui sont stockés sur yahoo-groups. (Il faut être inscrit pour y avoir accès).
Je ne saurais pas te ressortir le nom de tête, d'autant qu'entre deux versions il y avait eu un changement de nom. Il me semble qu'il y avait encore eu des remaniement après cela (la version que j'avais vue remonte à un an et demi, deux ans, je crois).
Bref c'est de l'expérimental pas encore intégré => regarder sur yahoo- groups ou dans la sand-box.
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
kanze@gabi-soft.fr wrote in news:1117783259.342562.305570
@g14g2000cwa.googlegroups.com:
Je voulais citer les buffers filtrants, mais je ne les ai pas
trouvé sur la page de Boost. Je sais qu'ils existe, parce qu'on
en a parlé dans clc++m -- j'y ai même jeté un coup d'oeil en
suivant le lien indiqué, et ils m'ont fait une très bonne
impression. (Beaucoup mieux que les petits bricolages que je
proposais à ma propre site.) Mais quand je vais à
http://www.boost.org/libs/libraries.htm, ils n'y sont pas.
J'en avais trouvé une implémentation dans les fichiers associés à la
mailing-list qui sont stockés sur yahoo-groups. (Il faut être inscrit
pour y avoir accès).
Je ne saurais pas te ressortir le nom de tête, d'autant qu'entre deux
versions il y avait eu un changement de nom.
Il me semble qu'il y avait encore eu des remaniement après cela (la
version que j'avais vue remonte à un an et demi, deux ans, je crois).
Bref c'est de l'expérimental pas encore intégré => regarder sur yahoo-
groups ou dans la sand-box.
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
wrote in news:1117783259.342562.305570 @g14g2000cwa.googlegroups.com:
Je voulais citer les buffers filtrants, mais je ne les ai pas trouvé sur la page de Boost. Je sais qu'ils existe, parce qu'on en a parlé dans clc++m -- j'y ai même jeté un coup d'oeil en suivant le lien indiqué, et ils m'ont fait une très bonne impression. (Beaucoup mieux que les petits bricolages que je proposais à ma propre site.) Mais quand je vais à http://www.boost.org/libs/libraries.htm, ils n'y sont pas.
J'en avais trouvé une implémentation dans les fichiers associés à la mailing-list qui sont stockés sur yahoo-groups. (Il faut être inscrit pour y avoir accès).
Je ne saurais pas te ressortir le nom de tête, d'autant qu'entre deux versions il y avait eu un changement de nom. Il me semble qu'il y avait encore eu des remaniement après cela (la version que j'avais vue remonte à un an et demi, deux ans, je crois).
Bref c'est de l'expérimental pas encore intégré => regarder sur yahoo- groups ou dans la sand-box.
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>