Salve a tutti. Ho un piccolo problema. Utilizzo gli oggetti della libreria fstream come ifstreame e ofstream per leggere un file .txt, e va tutto bene. L'ambiguità si verifica nel momento in cui apro un file .rtf. Il seguente programma:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
string line;

ifstream file("prova.rtf");

if(file.is_open()){
while(!file.eof()){
getline(file,line);
cout << line << endl;
line.clear();
}
}

else cout << "Unable to open file" << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

funziona benissimo, sia con un .txt che con un .rtf. Se invece ho seguente file .rtg:

--------------------------------------prova.rtf----------------------------------------
prova
----------------------------------------eof-------------------------------------------

e il seguente codice:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
string line;

ifstream file("prova.rtf");

if(file.is_open()){
while(!file.eof()){
getline(file,line);
if(line.rfind("prova",60) != string::npos){
cout << "Parola trovata" << endl;
}

}
}

else cout << "Unable to open file" << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Ho degli strani comportamenti. Se ho un file .txt normale, funziona. Se ho un file .rtf non funziona (come se l'rfind sulle stringhe non funzionasse rispetto all'esempio di prima); se rinomino il file prova.rtf in prova.txt, non trova niente (anche se il file che si viene a creare è effettivamente un file txt identico al file rtf); se copio e incollo il contenuto del file rtf in un file txt effettua la ricerca correttamente. Come posso fare a far funzionare l'rfind sul file .txt rinominato o direttamente sul file .rtf?!
GRazie

P.S.: il problema non dipende dal '60' nell'rfind, ho provato anche con numeri "esatti" (nel senso grandi al max quanto la stringa effettiva...