Synchronisateur de sous-titres en c++
Fermé
mathlo
-
13 juin 2012 à 21:56
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 14 juin 2012 à 20:36
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 14 juin 2012 à 20:36
A voir également:
- Synchronisateur de sous-titres en c++
- Anime en anglais sous titre francais ✓ - Forum Cinéma / Télé
- Les sous titres ne s'affichent pas sur la télé samsung - Forum Téléviseurs
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Comment enlever les sous-titres télécommande universelle ✓ - Forum TV & Vidéo
6 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
14 juin 2012 à 10:38
14 juin 2012 à 10:38
https://en.cppreference.com/w/cpp/string/basic_string
il y a le descriptif de tout ce que tu peux faire facilement avec string.
il y a getline, operator[] en particulier.
Tu ne peux pas dire à getline d'aller ligne 8, il faut que tu fasse 8 fois getline.
Ensuite le plus simple est de stocker dans un string. Tu accedes à une lettre en particulier avec [] (std::string a="esi"; cout<<a[1]<< " un s";). Le même opérateur pour modifier la valeur.
Mais ça devient compliqué à mon avis. Le plus simple à mon avis est de récupérer des entiers, de les modifier et de les réécrire.
En tête utile :https://en.cppreference.com/w/cpp/io/basic_stringstream
je n'ai pas testé, il manque pas mal de morceaux de code, mais c'est en gros l'idée de ce que tu dois faire.
il y a le descriptif de tout ce que tu peux faire facilement avec string.
il y a getline, operator[] en particulier.
Tu ne peux pas dire à getline d'aller ligne 8, il faut que tu fasse 8 fois getline.
Ensuite le plus simple est de stocker dans un string. Tu accedes à une lettre en particulier avec [] (std::string a="esi"; cout<<a[1]<< " un s";). Le même opérateur pour modifier la valeur.
Mais ça devient compliqué à mon avis. Le plus simple à mon avis est de récupérer des entiers, de les modifier et de les réécrire.
En tête utile :https://en.cppreference.com/w/cpp/io/basic_stringstream
std::string ligne; std::sstream ss; int heure,minutes;float secondes,temps; getline(file,ligne); ss.str(ligne.substr(0,2)); ss>>heure; ss.str(ligne.substr(3,2)); ss>>minutes; ss.str(ligne.substr(6,5)); ss>>secondes; temps=3600*heure+60*minutes+secondes; temps+=2.0;//decalage de 2 secondes du temps heure=temps/3600; minutes=(temps-heures*3600)/60; secondes=(temps-heures*3600-minutes*60); cout<<heures<<':'<<minutes<<':'<<secondes;
je n'ai pas testé, il manque pas mal de morceaux de code, mais c'est en gros l'idée de ce que tu dois faire.
Salut, et merci de ta réponse.
Alors alors, j'ai compris ton idée, mais pas encore le niveau technique pour comprendre la mise en application.
est ce que tu pourrais me donner plus de détails notamment par rapport a ces lignes de codes :
"ss.str(ligne.substr(0,2));
ss>>heure;
ss.str(ligne.substr(3,2));
ss>>minutes;
ss.str(ligne.substr(6,5));
ss>>secondes;"
En fait, je ne connais pas .substr et .str... Je pense que a chaque fois ca te permet de recuperer le caractere x de la ligne et de les stocker dans tes variable de temps?
Puis, ne manque-t-il pas une boucle? parce que la ca va faire une seule ligne non?
Enfin, "cout<<heures<<':'<<minutes<<':'<<secondes;" permet de réecrire le temps modifié, mais est ce que ca supprime la ligne dans le fichier?
merci encore pour ton aide :)
Alors alors, j'ai compris ton idée, mais pas encore le niveau technique pour comprendre la mise en application.
est ce que tu pourrais me donner plus de détails notamment par rapport a ces lignes de codes :
"ss.str(ligne.substr(0,2));
ss>>heure;
ss.str(ligne.substr(3,2));
ss>>minutes;
ss.str(ligne.substr(6,5));
ss>>secondes;"
En fait, je ne connais pas .substr et .str... Je pense que a chaque fois ca te permet de recuperer le caractere x de la ligne et de les stocker dans tes variable de temps?
Puis, ne manque-t-il pas une boucle? parce que la ca va faire une seule ligne non?
Enfin, "cout<<heures<<':'<<minutes<<':'<<secondes;" permet de réecrire le temps modifié, mais est ce que ca supprime la ligne dans le fichier?
merci encore pour ton aide :)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
14 juin 2012 à 15:11
14 juin 2012 à 15:11
Pour les fonctions str et substr, je t'invite à lire les liens fournis, ils expliquent les fonctions.
sstream est assez spcal, il permet de traiter un string comme un flux (type cout ou fstream), et permet donc de lire écrire différents type de données facilement dans un string).
Bien entendu, ça ne traite qu'une seule ligne et qu'un seul temps sur les deux, il faut faire une boucle et d'autre choses. Traite déjà un fichier avec une ligne, tu étendra après. Le mieux est de découpé en fonction, et de mettre le traitement d'une ligne dans une fonction bien spécifique.
cout écrit sur la sortie standard, c'est tout. Ton fichier ne sera modifié que si tu écris dedans. Pour commencer, je te conseil de créer un autre fichier plutôt que de modifier au fur à mesure celui que tu lis : ça t'évitera des bourde et pas mal de soucis de déplacements dans le fichier.
sstream est assez spcal, il permet de traiter un string comme un flux (type cout ou fstream), et permet donc de lire écrire différents type de données facilement dans un string).
Bien entendu, ça ne traite qu'une seule ligne et qu'un seul temps sur les deux, il faut faire une boucle et d'autre choses. Traite déjà un fichier avec une ligne, tu étendra après. Le mieux est de découpé en fonction, et de mettre le traitement d'une ligne dans une fonction bien spécifique.
cout écrit sur la sortie standard, c'est tout. Ton fichier ne sera modifié que si tu écris dedans. Pour commencer, je te conseil de créer un autre fichier plutôt que de modifier au fur à mesure celui que tu lis : ça t'évitera des bourde et pas mal de soucis de déplacements dans le fichier.
ok :)
derniere petite question, est ce qu'il est possible de garder deux fichiers ouverts en meme temps, un ou je lis, et l'autre ou je réecris? ou bien je dois les rouvrir/fermer a chaque fois?
merci encore :)
derniere petite question, est ce qu'il est possible de garder deux fichiers ouverts en meme temps, un ou je lis, et l'autre ou je réecris? ou bien je dois les rouvrir/fermer a chaque fois?
merci encore :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
14 juin 2012 à 16:00
14 juin 2012 à 16:00
Non, tu peux voir autant (dans la limite de la machine) de fichiers ouvert que tu veux.
Et comment faire dans ce cas? :/
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
14 juin 2012 à 20:36
14 juin 2012 à 20:36
? faire quoi ?