rechercher une chaîne de caractères dans un fichier en C++

En langage C une chaîne de caractère est mémorisée dans un tableau de caractères de type char, le type char peut stocker une lettre (on a bien dit qu'une seule lettre et pas plus). Il peut aussi stocker des nombres compris entre -128 et 127.
Comme l'ordinateur ne comprend que les nombres, les lettres sont transformées en nombres. Donc chaque caractère est associé à un nombre. Le langage C fait ce traitement très rapidement. par exemple:

Le caractère 'a' correspond dans le code ASCII au nombre 97. Pour vérifier tapez alt+97.

    char lettre = ' a ' ;
    printf("%c\n", lettre);

Une chaîne est un tableau de type char:
    char chaine[]="je suis un programmeur";

Notre objectif est de lire à partir d'un fichier texte et rechercher si une chaîne de caractères est dans ce fichier. On a un fichier dans le répertoire "C:/test.txt", ce fichier contient du texte par exemple une phrase simple :je m'appelle X et je suis un programmeur.

En C, char chaine[] est représentée sous la forme suivante:


j
e
s
u
i
s
u
n
p
r
o
g
r
a
m
m
e
u
r
‘\0’

' \0 ' indique la fin du tableau.


#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;

void rechercherDansFichier(char chaine[])
{
ifstream monFlux("C:/test.txt");
if(monFlux)
{
int i=0,position=0;
//La lecture se fait par caractère
monFlux.clear();
//initialiser la tete de lecture de 0
//ios::beg : commencer de début
monFlux.seekg(0, ios::beg);
char c;
//tant que ce n'est pas la fin de fichier
while(monFlux.get(c))
{
//incrémenter la position de la tete de lecture
position++;
//si le caractère correspond au caractère de la
//chaine recherchée dans la position i
//alors passer au caractère suivant
if(c==chaine[i]){
i++;
//si toutes les caractères de la chaine sont
//vérifiés alors on a trouvé la chaine dans
//le fichier
if(i==strlen(chaine)) //strlen : retourne la longueur de la chaine
printf("La chaine recherchée est dans la position : %d "
"et termine à la position %d\n", position-strlen(chaine),position);
}
//sinon si on trouve un seul caractère
//qui ne correspond pas alors
//redémarer de 0
else
i=0;
}
}
else
printf("Impossible d'ouvrir le fichier\n");
}

int main()
{
char chaine[]="un programmeur";
rechercherDansFichier(chaine);
system("pause");
}