Recherche d'une phrase dans un string

Recherche d'une phrase dans un string - C++ - Programmation

Marsh Posté le 12-07-2005 à 14:39:49    

S'il vous plait aidez moi !!!!!!!!
 
Il faut que je parcours un fichier texte et que pour chaque ligne (récupérer avec getline),
que je teste la presence d'un morceau de phrase pour ensuite ecrire la ligne dans un autre fichier sans ses 14 premiers caractères !
 
En fait j'arrive pas à faire en C/C++ l'equivalent de "ereg" et "substr" du langage PHP. :pfff:  
 
Quelqu'un a t'il la solution ?

Reply

Marsh Posté le 12-07-2005 à 14:39:49   

Reply

Marsh Posté le 12-07-2005 à 15:02:45    

tu veux absolument une expression régulière ou ton "morceau de phrase" est fixe ?
 
Edit : S'il est fixe, ca va assez vite :

Code :
  1. #include <iostream>
  2. #include <string>
  3. int main() {
  4. std::string str = "123456789";
  5. std::cout << "123456789.find(456) = " << static_cast<unsigned int>(str.find("456" )) << std::endl;
  6. std::cout << "123456789.find(147) = " << static_cast<unsigned int>(str.find("147" )) << " (erreur = " << static_cast<unsigned int>(std::string::npos) << " )" << std::endl;
  7. std::cout << "123456789.substr(3,4) = " << str.substr(3,4) << std::endl;
  8. return 0;
  9. }


 
Edit 2 :

Citation :

En fait j'arrive pas à faire en C/C++


C'est soit C, soit C++, mais pas les deux ...


Message édité par theshockwave le 12-07-2005 à 15:04:05
Reply

Marsh Posté le 12-07-2005 à 17:36:16    

Merci de ta réponse, j'avais pourtant essayé ces 2 fonctions mais sans succès...
En fait j'ai pas utilisé "find" car la valeur qu'elle retourne ne me dis pas si ma phrase recherchée est bien présente.
 
Comment savoir si l'enorme nombre renvoyé n'est pas tout simplement la position de mon occurence au lieu d'une erreur ?
 
 

Citation :

C'est soit C, soit C++, mais pas les deux ...


Oui merci je suis pas SI nul non plus !  :heink:


Message édité par ronaldinho10 le 12-07-2005 à 17:39:25
Reply

Marsh Posté le 12-07-2005 à 17:45:38    

tu testes contre std::string::npos :
 

Code :
  1. std::string::size_type pos = chaine.find(souschaine);
  2. if(pos != std::string::npos) {
  3.   // la sous chaine est présente à partir du caractère <pos>
  4. } else {
  5.   // la sous chaine n'a pas été trouvée
  6. }


Reply

Marsh Posté le 12-07-2005 à 17:48:27    

Efficacité, rapidité, ... de la réponse !
Merci beaucoup  :jap:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed