IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Questions diverses sur le C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut Questions diverses sur le C++
    Bonjour,
    J'aimerais avoir quelques réponses si possible à ces quelques questions:

    1) Est il possible de venir lire des données dans un fichier en .txt afin qu'un code puisse s'en servir ? pourquoi?

    2) Pourquoi:
    Jeu * truc = new Jeu(x,y);
    ne peut s'écrire que comme ceci ???, sachant que Jeu est une list

    En vous remerciant d'avance, ce sont des choses dont je comprends l'utilité mais pas le pourquoi du comment.

  2. #2
    Membre éprouvé Avatar de BoudBoulMan
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 100
    Par défaut
    Citation Envoyé par nico27027 Voir le message
    1) Est il possible de venir lire des données dans un fichier en .txt afin qu'un code puisse s'en servir ? pourquoi?
    Oui, il est tout à fait possible de récupérer des données d'un fichier texte et la librairie standard fournit des fonctions pour le faire assez facilement.

    Citation Envoyé par nico27027 Voir le message
    2) Pourquoi:
    Jeu * truc = new Jeu(x,y);
    ne peut s'écrire que comme ceci ???, sachant que Jeu est une list
    Il s'agit là de la syntaxe de création d'objet. De cette manière, tu indiques que tu veux utiliser un objet de la classe Jeu pour bénéficier de toutes les méthodes de cette classe.

    Citation Envoyé par nico27027 Voir le message
    ce sont des choses dont je comprends l'utilité mais pas le pourquoi du comment.
    la compréhension de l'utilité d'une fonction permet dans la plupart des cas de comprendre le pourquoi de l'existence de cette fonction.

    Pourquoi y a des fonctions pour lire une ligne dans un fichier? Parce qu'on en a besoin !
    C'est aussi bête que ça

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Salut,

    1) Oui il est possible d'accédez à un fichier texte en C++. D'ailleurs il est possible d'accédez a tout type de fichier. Pour cela il faut connaitre la structure de celui - ci pour pouvoir l'utiliser. Pourquoi? tout fichier peu être lue en binaire donc il peut être accessible par un programme.

    2) Ce que tu alloue est un objet. Un objet en C++ doit être initialisé comme ça. C'est une norme et je pense pas que les compilateurs accepte autre chose. En C++ le new est le malloc en C.

    Voilà j'espère avoir pue répondre à tes questions.

    ++

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Namtar Voir le message
    2) Ce que tu alloue est un objet. Un objet en C++ doit être initialisé comme ça.
    Non. En particulier, un objet C++ peut aussi être alloué ainsi :

    Il s'agit alors d'une allocation sur la pile, et non d'une allocation dynamique.

    Remarque : Même dans le cas d'une allocation dynamique, il est possible d'allouer un objet autrement, et en séparant allocation mémoire de création de l'objet, mais c'est un usage plus avancé, dont je préfère ne pas parler pour ne pas trop embrouiller.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Salut,

    Citation Envoyé par JolyLoic Voir le message
    Non. En particulier, un objet C++ peut aussi être alloué ainsi :

    Il s'agit alors d'une allocation sur la pile, et non d'une allocation dynamique.

    Remarque : Même dans le cas d'une allocation dynamique, il est possible d'allouer un objet autrement, et en séparant allocation mémoire de création de l'objet, mais c'est un usage plus avancé, dont je préfère ne pas parler pour ne pas trop embrouiller.

    Arf oui désolé. J'ai lue un peu trop vite et le "ne peut s'écrire que comme ceci ???" m'a fais dire une bétise. ^^


    Hugo :

    Certaine des réponse sont dans le FAQ.
    Je sais par exemple aue l'utilisation des pointeurs intéligent est interraissante pour plusieurs points. Mon prof de C++ en fais souvent l'éloge mais j'en est encore jamais implémenté.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Par défaut
    Merci de tes indications Namtar. Il faudraitque je prenne la peine de la lire, cette fichue FAQ !

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    Bonsoir,

    Bon j'ai un problème de compréhension avec mon cin.sync ( )
    Voila ce que je sais:
    J'utilise des getline (cin,x) (x=une phrase).

    Lors de l'extraction en cin>> le >> dès qu'il tombe sur un espace il fait bugger le système.
    Par ailleurs, j'ai aussi compris qu'il fallait que je vide ma mémoire tampon pour que l'extraction de ma phrase se fasse correctement.
    Soit, la fonction pour vider mon buffer se nommant donc: cin.clear ( )
    Or le cin.clear ( ) ne marche pas!!!!
    Très bien, j'ai une autre fonction pour palier à ce défaut: cin.sync ( )
    Ok, ok, mais dans les forums que je fais je lis que .sync ( ) n'est pas une fonction normé, est qu'elle veut tout dire et rien dire.....tout dépendant l'environnement dans lequel on se situe.

    Autre recherche, sur ses fonctions: cin.ignore( ): fonction normé qui vient ignoré les espaces créer par mon getline.
    Je le code ... est ce cin.ignore ( ) marche niquel!

    Alors question.

    Le cin.ignore ( ) ne vide pas le buffer bien vrai?, donc nous ne sommes pas obligé de forcer ce buffer à se vider si l'on utilise un ignore espace ?

    Alors est il plus judicieux d'utiliser cette fonction normé plutot que .sync ( ) qui ne l'ai pas?

    Quelqu'un pour ce problème?

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    sync n'a aucun rapport
    ignore() consomme des caractères sans s'en souvenir
    clear() nétoie les bits d'état et rien d'autre.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    Ah je suis d'accord avec toi, mais dis toi que certains profs d'informatiques veulent savoir toujours plus pourquoi!
    Et pourquoi cette syntaxe et pas l'autre?
    Et pourquoi ça, exactement ça!
    Et pourquoi......

    D'ici quelques jours je m'attend à un pourquoi cout, pourquoi cin ....
    Pour le new... je n'avais pas compris le comment ca marché, mais je comprend parfaitement pourquoi j'en ai besoin.
    Donc voila, merci pour vos réponses en tout cas

  10. #10
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    char *second = strtok(NULL, "/");
    char *third = strtok(NULL, "\0");


    Re, alors voici un bout de ce qui me permet de découper en trois une chaine de caractere dan .txt

    Quelqu'un peut m'expliquer la syntaxe avec le NULL ???
    Pourquoi NULL?

  11. #11
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par nico27027 Voir le message
    char *second = strtok(NULL, "/");
    char *third = strtok(NULL, "\0");


    Re, alors voici un bout de ce qui me permet de découper en trois une chaine de caractere dan .txt

    Quelqu'un peut m'expliquer la syntaxe avec le NULL ???
    Pourquoi NULL?
    Argh, le code à éviter à tout prix. La fonction strtok est une fonction qui retient de l'état à chaque appel, ce qui n'est pas généralement une bonne chose.

    L'idée est qu'on l'appelle une première fois (que tu ne montres pas ici) en lui passant la chaîne à découper. Les fois suivantes, elle doit recommencer son découpage à partir de là où elle s'était arrêté. Donc, pour lui indiquer que l'on continue un découpage précédent, et qu'on n'en commence pas un nouveau, on lui passe une valeur spéciale, conventionnelle, qui ne peut pas correspondre à une vraie chaîne. Le pointeur nul répond à cette définition.

    Quelques problèmes associés à strtok :
    - Je dois entièrement finir de découper une chaîne avec de pouvoir commencer à en découper une autre, puisque l'on continue à partir de la dernière chaîne découpée...
    - En particulier, dans un contexte multithread, la condition précédente n'est pas facile à vérifier (sauf si l'implémentation utilise du TLS, mais dans ce cas là on ne peut pas continuer dans un thread une découpe commencée dans un autre, ce qui pose d'autres problèmes).
    - Cette fonction modifie la chaîne d'entrée, ce qui n'est pas a priori une bonne chose. Son rôle est de retourner un découpage, pas de modifier son entrée. Il s'agit d'un effet secondaire, et dans l'idéal, une fonction de ce genre n'a pas d'effets secondaires.
    - Enfin, cette fonction travaille avec des char*, et en c++, pour manipuler des chaînes de caractères, on travaille généralement avec des std::string, qui sont bien plus simples à utiliser.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  12. #12
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut Pourquoi pourquoi ?
    Les pourquoi sont certes intéressants, à conditions que ce soient les bons. Ainsi, sur le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Jeu * truc = new Jeu(x,y);
    Un pourquoi ça ne peut pas s'écrire autrement me gêne, puisque justement, ça peut s'écrire autrement.

    Je peux trouver des pourquoi qui me semblent plus pertinents (j'ai marqué d'un '-' les pourquoi qui me semblent accessibles à un débutant, et par un '*' ceux qui demandent probablement un peu plus d'habitude :

    Sur les choix fait par le développeur du code :
    - Pourquoi passer par un pointeur au lieu de créer une simple variable
    - Pourquoi nommer des variables avec des noms si peu significatifs que truc, x, y ?
    * Pourquoi ne pas utiliser un pointeur intelligent

    Sur les choix faits par les concepteurs du langage :
    - Pourquoi doit-on répéter deux fois le mot Jeu
    * Pourquoi permettre la syntaxe équivalente ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Jeu *truc(new Jeu(x,y));
    * Pourquoi mêler dans l'écriture classique l'allocation mémoire et la construction
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    Merci beaucoup pour strtok.
    La maintenant j'en suis à comprendre comment marche isstringstream qui me permet de transformer mes caracteres en entier .... vraiment, faire de l'informatique c'est largement faisable, mais comprendre comment ça marche c'est le bordel.

    Merci bcp en tout cas.

  14. #14
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par défaut
    Beaucoup de tes questions trouveront certainement une réponse dans la FAQ c++ de Dvp
    lecture dans un fichier ligne par ligne
    lecture / écriture binaire dans un fichier

    Et parfois dans la FAQ C
    Qu'est ce que la pile/ le tas ?

  15. #15
    Membre éprouvé Avatar de BoudBoulMan
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 100
    Par défaut
    Citation Envoyé par nico27027 Voir le message
    Ah je suis d'accord avec toi, mais dis toi que certains profs d'informatiques veulent savoir toujours plus pourquoi!
    Et pourquoi cette syntaxe et pas l'autre?
    Et pourquoi ça, exactement ça!
    Oui, il est toujours bon de déterminer la raison pour laquelle on utilise une certaine fonction pour une certaine tâche et voir s'il n'en existe pas de meilleur.

    J'avais interprété ton pourquoi précédent comme un "pourquoi ce type de fonction existe?" et ne pouvait pas avoir de réponse précise. Tout dépend de ton programme.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Par défaut
    Cher JolyLoic,

    Je serais tout à fait intéressé par les réponses à tous ces pourquoi . Notamment ceux avec étoile (je ne savais même pas qu'il y a avait plus de deux façons de créer un objet, autre que new ou sur la pile...)

    Hugo

Discussions similaires

  1. Questions diverses sur MySQL 5.0
    Par AsmCode dans le forum SQL Procédural
    Réponses: 14
    Dernier message: 25/01/2007, 16h35
  2. Questions diverses sur les packages
    Par Stief dans le forum Mise en forme
    Réponses: 1
    Dernier message: 15/10/2006, 11h35
  3. [RSS] Questions diverses sur les flux RSS (Google et phpBB)
    Par leserapheen dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/10/2006, 14h35
  4. [DW8] Questions diverses sur le logicie
    Par syn_42 dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 01/03/2006, 17h23
  5. Questions diverses sur TIBDataset et TDBGrid
    Par AlexB59 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/11/2005, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo