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++

  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 : 51
    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 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

  6. #6
    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?

  7. #7
    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 : 51
    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 ?
    * 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.

  8. #8
    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 : 51
    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.

  9. #9
    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.

  10. #10
    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 ?

  11. #11
    Membre habitu�
    Inscrit en
    Janvier 2008
    Messages
    13
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par d�faut
    Bonjour,


    cout <<"Veuillez entrer le numero de billet : "<<endl;
    cin >>billet;
    cin.ignore();


    cout <<"Veuillez entrer le nom de tribune : "<<endl;
    getline(cin,nom);

    Voici, un bout de mon code, j'utilise donc cin.ignore()
    Apr�s avoir lu quelques post sur les cin. quelque chose, j'aimerais savoir si j'en est compris le fonctionnement.

    A la base je n'avais donc rien mis: Le programme plant�.
    J'ai rajoutt� cin.sync() san vraiment savoir pourquoi .... miracle ca march�.
    Par la suite j'ai donc voulu comprendre pourquoi sync(), et je me suis rendu compte qu'il �tait mal norm�, que cela d�pendait de l'environnement ...etc.

    J'ai donc compris qu'il me fallait vider la m�moire tampon qui est utiliser pour un stockage temporaire de mes cin, et qu'il fallait vider ce buffer.
    J'ai cru comprendre et la reprenait moi si c'est faux, mais que l'effacement de mon buffer �tait dut � mes "getline (cin,nom)", par le fait que le getline saisie une ligne.

    Pouvez vous m'expliquer un peu mieux ce getline est ce qu'il fait au cin ?

    Ensuite, j'ai donc rajoutter cin.ignore() et le code marche aussi.

    cin.ignore() que fait il exactement? il ne vide pas le buffer de toute facon?

  12. #12
    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
    Ce n'est pas tant d� � ce que fait getline, qu'� ce qu'il ne fait pas.
    getline reprend o� s'est arr�t� l'op�rateur d'extraction >>, soit juste avant le saut de ligne.
    ignore consomme un caract�re : ton saut de ligne.

    Tout �a est dans la FAQ.
    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...

  13. #13
    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.

  14. #14
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    620
    D�tails du profil
    Informations personnelles :
    �ge : 48
    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

  15. #15
    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�.

  16. #16
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    620
    D�tails du profil
    Informations personnelles :
    �ge : 48
    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 !

  17. #17
    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?

  18. #18
    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...

  19. #19
    Membre habitu�
    Inscrit en
    Janvier 2008
    Messages
    13
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par d�faut
    Alors que fais mon .sync??? il vide bien ce buffer?
    Tu utiliserais quoi toi?
    sync ou ignore ?

  20. #20
    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
    a- Il synchronise avec le flux attach� ... aucun rapport.

    http://dinkumware.com/manuals/defaul...treambuf::sync

    b- ignore(), et je l'ai d�j� dit.

    http://cpp.developpez.com/faq/cpp/?p...et_string_line
    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...

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