Bonjour Jason et merci. J'ai trouvé dans la documentation (et uniquement dans celle ci) pour ceux comme moi qui ont essayé avec ofstream d'ajouter le texte en fin de fichier ceci : std::fstream f("animals.txt",std::ios::in | std::ios::app);
Je suis en train de tomber amoureux de C++ ! J'ai fait du python, du java, du typescript et du php mais il y a quelque chose avec le C++ que je kiff réellement. J'ai hâte d'en savoir un peu plus et de commencer à utiliser des bibliothèques.
C'est souvent comme cela que ça se passe, un langage peut se démarquer des autres, parfois pour des préférences aussi simples que la manière d'écrire le code 👍
Bonjour, oui, c'est un choix que de ne pas couper de passages sur les vidéos, pour faire naturel, comme ça le serait dans un cours classique, ou une conférence 😉
@@formation-video Merci maintenant je suis un peu plus motivés. Dis: penseriez vous un jour nous parlez des bibliotheques ou librairies externes developpées en C++ par les autres qui offre des fonctionnalités et pouvoir les utiliser dans notre code.
Pas vraiment non, les gens n'ont pas besoin de tutos pour cela, mais de la documentation spécifique. Par contre, j'ai prévu d'aborder une bibliothèque comme Qt, dans un cours à part, avec C++ évidemment.
Salut, encore une fois merci beaucoup pour ces cours très bien construits et très instructifs. J'ai une question, j'ai réussi à faire une boucle if avec une condition tant que i < 12 pour lire chaque mot. Mais comment je pourrais faire pour faire une boucle pour lire tout un texte jusqu'à la fin si je n'en connais pas la longueur ou le nombre de mots ? Comment mettre la condition de s'arrêter quand on arrive au dernier mot ? Merci pour ton aide et bonne continuation! :D
Bonjour, Je suis actuelle à 9:15 de vidéo et vous venez de dire quelque chose de très intéressant et cela me fait me poser une question. Vous dites que sans sauvegarder, le programme que nous écrivons se trouve dans la mémoire vive. Alors je me demande si (en imaginant que j'ai une Ram de 4Go) en écrivant un programme ayant une taille supérieure à 4Go mon pc peut rencontrer un problème ? Est-ce que cela peut m'empêcher de sauvegarder mon programme ? Et si j'arrive à sauvegarder ce programme, est-ce que ma Ram perd instantanément les 4Go de programme ?
Alors il faut déjà avoir connaissance du fonctionnement de la mémoire (dite virtuelle dans ce cas précis). Cette vidéo traite du sujet en détails : th-cam.com/video/B1wJJNITvkY/w-d-xo.html Et pour répondre à ta question : en cas de manque de mémoire vive, le système utiliserait son système de pagination. Et si vraiment la mémoire totale venait à être saturée, le système ferait le nécessaire pour récupérer des ressources (crash d'un programme en cours, par exemple).
Merci pour la video!Mais je comprends pas pourquoi quand je fait file.is_open() le fichier est toujours vrai et il se ferme pas à la fin du fichier ce qui me donne une boucle infinie ?
Et même avec une boucle while même si je fait tout dans la boucle while au lieu d'être dans les parenthèse comme ce que j'ai fait dans la boucle for il y'a toujours une boucle Infinie et ça répète le dernier mot ou ligne du fichier
La fonction is_open() vérifie si le fichier est ouvert, ce qui est toujours le cas car il n'est fermé qu'à la fin de sa portée (dans ta cas, à la fin de la fonction main). C'est effectivement feof(), héritée du C qui vérifie que nous n'avons pas atteint la fin du fichier. Mais en C++, c'est encore plus simple : pastebin.com/BTEZqSkL
Bonjour. Je travail en ce moment sur un projet de gestion de bibliothèque en C++. Je désire savoir si on peut supprimer un fichier à l’aide de mot clé en langage C++, par ce qu’apparemment le remove() et le rename de notre bon vieux langage C ne marche pas… merci
Bonjour. Est-ce qu'il existe un moyen de lire un fichier jusqu'à un saut de ligne (par exemple, ou un autre charactere) ? En C, je sais qu'on utilise un buffer mais ici non, je voudrais savoir si il y a une méthode qui permet ce genre de manipulation de fichier ?
Il faut bien distinguer deux codages pour les fichiers : - le mode "texte", c'est-à-dire un codage à base de caractères (que sont les fichiers au format TXT, INI, JSON, CSV, CPP, PY, JAVA, PHP, HTML, etc.) - le mode "binaire", c'est-à-dire un codage à base d'octets (que sont tous les autres fichiers : exécutables, images, sons, vidéos, ...) - bref, tout ce que tu ne pourrais pas afficher de manière lisible en l'ouvrant dans un éditeur de texte.
@@formation-video Donc si je comprends bien, il faut que j’utilise (ou que je fabrique) une librairie pour pouvoir manipuler confortablement un .ini ou un markdown. Ce sont des fichiers textes enrichis et il faut faire comprendre à c++ comment est enrichie l’information contenue dans le fichier. Je serais surpris qu’il n’y ait pas de lib à ce sujet.
Attention, on parle de bibliothèque, pas de librairie, et ce que tu cherches s'appelle un parseur de fichier. Donc, en faisant des recherches comme "cpp markdown parser" ou "cpp ini parser", tu trouveras 👍
@@formation-video Merci :) C'est exactement ça ! Ceci dit tu me surprends pour la différence bibliothèque & librairie, Je vais être vigilant ! S'il y a confusion c'est que je me suis sans doute fait avoir avec l'anglais Library ! Encore merci pour "Parser" 👍 Je profite que tu lises les commentaires pour te dire que j'ai terminé mon programme d'apprenti sorcier. Le principe est simple : $ isPrime.exe 647 retournera 1 car c'est un nombre premier $ isPrime.exe 646 retournera 0 car ce n''est pas un nombre premier $ isPrime.exe -h ou sans argument affiche l'aide / version Tout cela fonctionne "sur le fond" mais en vrai je suis mécontent ! Je suis mécontent des vérifications que j'apporte aux données saisies par l'utilisateur, ça laisse à désirer. Force est de constater que je ne maitrise pas encore la manipulation des différents types de base. Je suis également surpris par la petite taille d'un Integer pour stocker la valeur que je reçois. Du coup je catch une exception, ce n'est pas super propre, je me suis fait surprendre.
Alors j'ai eu le coup donc je met ça la il faut éviter les chemins relatifs car ca va le faire depuis l'endroit ou vous compilez exemple si vous mettes std::ifstream f{"../files/animal.txt"} et que vous compilez depuis le dossier parent de files ça ne marchera pas
Cela prend surtout à partir de l'endroit où se trouve ton exécutable. Là forcément il est au même endroit que le code source, mais dans un cas plus "réel", ça serait différent. On place donc toujours les ressources par rapport à l'emplacement de notre exécutable pour les chemins du programme, qu'ils soient relatifs ou absolus.
@formation-video moi en tout cas ca a vraiment pris depuis l'endroit d'ou j'exécutais le fichier donc si je suis dans download et que je fais ~/documents/main.c il faut que l'emplacement relatif du fichier le soit par rapport à downloads
en gros j'avais mon code source dans un folder src et mon fichier dans un folder files a coté et donc j'ai mis ../files/animals.txt sauf que vu que je l'utilise depuis le dossier parent j'ai du mettre files/animals.txt
Un fichier texte est composé de caractères (comme ton fichier main.cpp), là où un fichier binaire (une image, une vidéo, un exécutable, etc.) est composé d'une suite d'octets 👍
Généralement, on va faire ce choix suivant la complexité des données à stocker, les performances voulues en lecture/écriture, la compatibilité selon les supports. Dans ce cas précis, tu vas généraliser stocker des données complexes, donc le mode binaire semblerait le plus approprié (et le plus performant aussi).
ok ca marche faute d'autographe que j'ai faite.... cette fonction voie juste les changement effectuer sur le dossier. est ce que cela ce voie uniquement si ont travail a partir de c++ ou cela vas également ce voir quand ont travail sur le fichier texte, bon je vais testé pour avoir cette réponse. il voie juste le travail qui ce fait dans son éditeur.
Bonjour Jason et merci. J'ai trouvé dans la documentation (et uniquement dans celle ci) pour ceux comme moi qui ont essayé avec ofstream d'ajouter le texte en fin de fichier ceci : std::fstream f("animals.txt",std::ios::in | std::ios::app);
Je suis en train de tomber amoureux de C++ ! J'ai fait du python, du java, du typescript et du php mais il y a quelque chose avec le C++ que je kiff réellement.
J'ai hâte d'en savoir un peu plus et de commencer à utiliser des bibliothèques.
C'est souvent comme cela que ça se passe, un langage peut se démarquer des autres, parfois pour des préférences aussi simples que la manière d'écrire le code 👍
Bonjour,
Vos vidéo sont super : pas d hyper cut a tout va pas de blabla, juste le c++ et le code. Parfait. Merci
Bonjour, oui, c'est un choix que de ne pas couper de passages sur les vidéos, pour faire naturel, comme ça le serait dans un cours classique, ou une conférence 😉
Merci pour la vidéo, Je l'attendais.
De rien =)
Vous m'expliquer tellement de choses que j'ignorez
Bon apprentissage alors 😉
@@formation-video Merci maintenant je suis un peu plus motivés.
Dis: penseriez vous un jour nous parlez des bibliotheques ou librairies externes developpées en C++ par les autres qui offre des fonctionnalités et pouvoir les utiliser dans notre code.
Pas vraiment non, les gens n'ont pas besoin de tutos pour cela, mais de la documentation spécifique. Par contre, j'ai prévu d'aborder une bibliothèque comme Qt, dans un cours à part, avec C++ évidemment.
@@formation-video ah ok ça serai cool d'aborder Qt avec Vous .
Merci beaucoup monsieur
De rien, à bientôt Dihya 👋
Merci :)
👍
Salut, encore une fois merci beaucoup pour ces cours très bien construits et très instructifs.
J'ai une question, j'ai réussi à faire une boucle if avec une condition tant que i < 12 pour lire chaque mot. Mais comment je pourrais faire pour faire une boucle pour lire tout un texte jusqu'à la fin si je n'en connais pas la longueur ou le nombre de mots ?
Comment mettre la condition de s'arrêter quand on arrive au dernier mot ?
Merci pour ton aide et bonne continuation! :D
Bonjour, il suffit de parcourir le fichier tant qu'il y a quelque chose à lire (une boucle en faisant des appels à std::getline par exemple).
Bonjour, Je suis actuelle à 9:15 de vidéo et vous venez de dire quelque chose de très intéressant et cela me fait me poser une question. Vous dites que sans sauvegarder, le programme que nous écrivons se trouve dans la mémoire vive. Alors je me demande si (en imaginant que j'ai une Ram de 4Go) en écrivant un programme ayant une taille supérieure à 4Go mon pc peut rencontrer un problème ? Est-ce que cela peut m'empêcher de sauvegarder mon programme ? Et si j'arrive à sauvegarder ce programme, est-ce que ma Ram perd instantanément les 4Go de programme ?
Alors il faut déjà avoir connaissance du fonctionnement de la mémoire (dite virtuelle dans ce cas précis). Cette vidéo traite du sujet en détails : th-cam.com/video/B1wJJNITvkY/w-d-xo.html
Et pour répondre à ta question : en cas de manque de mémoire vive, le système utiliserait son système de pagination. Et si vraiment la mémoire totale venait à être saturée, le système ferait le nécessaire pour récupérer des ressources (crash d'un programme en cours, par exemple).
Merci pour la video!Mais je comprends pas pourquoi quand je fait file.is_open() le fichier est toujours vrai et il se ferme pas à la fin du fichier ce qui me donne une boucle infinie ?
Montre ton code
@@formation-video
int main
{
std::ifstream file{"file.txt"};
for(std::string name;file.is_open();std::getline(file,name))
{
std::cout
*Infinie
Et même avec une boucle while même si je fait tout dans la boucle while au lieu d'être dans les parenthèse comme ce que j'ai fait dans la boucle for il y'a toujours une boucle Infinie et ça répète le dernier mot ou ligne du fichier
La fonction is_open() vérifie si le fichier est ouvert, ce qui est toujours le cas car il n'est fermé qu'à la fin de sa portée (dans ta cas, à la fin de la fonction main). C'est effectivement feof(), héritée du C qui vérifie que nous n'avons pas atteint la fin du fichier.
Mais en C++, c'est encore plus simple : pastebin.com/BTEZqSkL
Bonjour. Je travail en ce moment sur un projet de gestion de bibliothèque en C++. Je désire savoir si on peut supprimer un fichier à l’aide de mot clé en langage C++, par ce qu’apparemment le remove() et le rename de notre bon vieux langage C ne marche pas… merci
Bonjour, en C++ il y a std::remove() : en.cppreference.com/w/cpp/io/c/remove
Je vous remercie
👍
Bonjour. Est-ce qu'il existe un moyen de lire un fichier jusqu'à un saut de ligne (par exemple, ou un autre charactere) ? En C, je sais qu'on utilise un buffer mais ici non, je voudrais savoir si il y a une méthode qui permet ce genre de manipulation de fichier ?
Ah bah c'était répondu dans le Bonus, parfait merci pour la vidéo :3
Oui, bien vu ! 👍
Existe-t-il d’autres formats reconnus facilement ? Je pense aux fichiers .ini, au format json, csv par exemple
Il faut bien distinguer deux codages pour les fichiers :
- le mode "texte", c'est-à-dire un codage à base de caractères (que sont les fichiers au format TXT, INI, JSON, CSV, CPP, PY, JAVA, PHP, HTML, etc.)
- le mode "binaire", c'est-à-dire un codage à base d'octets (que sont tous les autres fichiers : exécutables, images, sons, vidéos, ...) - bref, tout ce que tu ne pourrais pas afficher de manière lisible en l'ouvrant dans un éditeur de texte.
@@formation-video Donc si je comprends bien, il faut que j’utilise (ou que je fabrique) une librairie pour pouvoir manipuler confortablement un .ini ou un markdown.
Ce sont des fichiers textes enrichis et il faut faire comprendre à c++ comment est enrichie l’information contenue dans le fichier.
Je serais surpris qu’il n’y ait pas de lib à ce sujet.
Attention, on parle de bibliothèque, pas de librairie, et ce que tu cherches s'appelle un parseur de fichier. Donc, en faisant des recherches comme "cpp markdown parser" ou "cpp ini parser", tu trouveras 👍
@@formation-video Merci :) C'est exactement ça !
Ceci dit tu me surprends pour la différence bibliothèque & librairie, Je vais être vigilant !
S'il y a confusion c'est que je me suis sans doute fait avoir avec l'anglais Library !
Encore merci pour "Parser" 👍
Je profite que tu lises les commentaires pour te dire que j'ai terminé mon programme d'apprenti sorcier. Le principe est simple :
$ isPrime.exe 647
retournera 1 car c'est un nombre premier
$ isPrime.exe 646
retournera 0 car ce n''est pas un nombre premier
$ isPrime.exe -h ou sans argument
affiche l'aide / version
Tout cela fonctionne "sur le fond" mais en vrai je suis mécontent !
Je suis mécontent des vérifications que j'apporte aux données saisies par l'utilisateur, ça laisse à désirer. Force est de constater que je ne maitrise pas encore la manipulation des différents types de base.
Je suis également surpris par la petite taille d'un Integer pour stocker la valeur que je reçois. Du coup je catch une exception, ce n'est pas super propre, je me suis fait surprendre.
Nice vid
Un programmeur qui programme en C++ sait qu'il faut ABSOLUMENT enregistrer un fichier!!!!!!!!
Ah, malheureusement non. Mais ce n'est pas grave, tout le monde apprend, sans cesse 😉
C est sur MacBook ?
Non, ce n'est pas un PC de la marque Apple, et c'est sur Windows 10
Alors j'ai eu le coup donc je met ça la il faut éviter les chemins relatifs car ca va le faire depuis l'endroit ou vous compilez exemple si vous mettes std::ifstream f{"../files/animal.txt"} et que vous compilez depuis le dossier parent de files ça ne marchera pas
Je sais pas si il y a une solution plus propre que les absolute path mais ça m'intéresse
Cela prend surtout à partir de l'endroit où se trouve ton exécutable.
Là forcément il est au même endroit que le code source, mais dans un cas plus "réel", ça serait différent.
On place donc toujours les ressources par rapport à l'emplacement de notre exécutable pour les chemins du programme, qu'ils soient relatifs ou absolus.
@formation-video moi en tout cas ca a vraiment pris depuis l'endroit d'ou j'exécutais le fichier donc si je suis dans download et que je fais ~/documents/main.c il faut que l'emplacement relatif du fichier le soit par rapport à downloads
je sais pas si j'ai été très clair
en gros j'avais mon code source dans un folder src et mon fichier dans un folder files a coté et donc j'ai mis ../files/animals.txt sauf que vu que je l'utilise depuis le dossier parent j'ai du mettre files/animals.txt
j'ai pas compris la difference entre fichier binaire et fichier texte :((
Un fichier texte est composé de caractères (comme ton fichier main.cpp), là où un fichier binaire (une image, une vidéo, un exécutable, etc.) est composé d'une suite d'octets 👍
@@formation-video je pars du principe ou j'utilise un fichier comme base de données, comment savoir si je dois le faire en texte ou en binaire svp ?
Généralement, on va faire ce choix suivant la complexité des données à stocker, les performances voulues en lecture/écriture, la compatibilité selon les supports.
Dans ce cas précis, tu vas généraliser stocker des données complexes, donc le mode binaire semblerait le plus approprié (et le plus performant aussi).
@@formation-video Merci beaucoup !
ok ca marche faute d'autographe que j'ai faite.... cette fonction voie juste les changement effectuer sur le dossier. est ce que cela ce voie uniquement si ont travail a partir de c++ ou cela vas également ce voir quand ont travail sur le fichier texte, bon je vais testé pour avoir cette réponse. il voie juste le travail qui ce fait dans son éditeur.