Ciao e benvenuta sul forum.
Considero un file fatto in questo modo:
Mario Rossi, 12345
Filippo Bianchi, 54321
Andrea Neri, 23145
Giorgio Bruni, 32415
Se il tuo è diverso allora dovrai fare qualche piccola modifica al codice.
Di seguito posto un esempio di programma che legge il file riga per riga, separa il nome del cliente dal codice del viaggio e confronta un nome inserito da tastiera con tutti i clienti presenti nella lista. Quindi dice se il cliente è nella lista oppure no.
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
/*
* Funzione che prende in ingresso una riga letta dal file
* e restituisce il nome del cliente, cioe' tutto quello
* che sta prima della virgola
*/
string get_nome_cliente(string riga_file) {
return riga_file.substr(0, riga_file.find(","));
}
/*
* Funzione che prende in ingresso una riga letta dal file
* e restituisce il codice del viaggio, cioe' tutto quello
* che sta dopo la virgola, convertito in un intero
*/
int get_codice_viaggio(string riga_file) {
int codice;
int pos_virgola = riga_file.find(",");
int lungh = riga_file.length();
string stringa_codice = riga_file.substr(pos_virgola+2, lungh - pos_virgola);
istringstream (stringa_codice) >> codice;
return codice;
}
int main(int argc, char const *argv[])
{
ifstream my_file("clienti.txt");
string line;
string nome_inserito;
cout << "Inserire il nome del cliente: ";
getline(cin, nome_inserito);
cout << "Nome inserito: " << nome_inserito << endl;
bool cliente_nella_lista = false;
while(getline(my_file, line)) {
//cout << "Nome trovato: " << get_nome_cliente(line) << endl;
//cout << "Codice viaggio: " << get_codice_viaggio(line) << endl;
string nome_trovato = get_nome_cliente(line);
if (nome_inserito == nome_trovato) {
cout << "IL CLIENTE E' NELLA LISTA!" << endl;
cliente_nella_lista = true;
}
}
if(!cliente_nella_lista) {
cout << "Il cliente non e' nella lista: lo aggiungo" << endl;
// TODO aggiungi il nome al file
}
my_file.close();
return 0;
}
Ovviamente l'ho scritto in italiano perché parlo solo italiano e inglese...
Prova a partire da qui, e se hai altri dubbi chiedi pure.