Cerca la scheda C ++ specifica delimitata
-
12-12-2019 - |
Domanda
.Quantità del tipo Numero del numero
15 Controllo 52.42
23 Risparmio 51.51
11 Controllo 12.21
è il mio file delicato della scheda
Vorrei essere in grado di cercare righe dal numero dell'account.Dì se metto il 23 anni, voglio ottenere quella riga specifica.Come farebbe l'ID?
Ancora più avanzata, se volevo modificare un valore specifico, dire importo 51.51 in conto 23. Come faccio a prendere quel valore e sostituirlo con un nuovo valore?
Finora sto solo leggendo in fila per riga
.linea stringa; IFSleam è ("ACCOUNT.TXT");
.if (is.is_open()) { while (std::getline(is, line)) // read one line at a time { string value; string parseline; std::istringstream iss(line); getline(line, parseline); cout << parseline << endl; // do something with the value while (iss >> value) // read one value at at time from the line { //cout << line << " "; // do something with the value } } is.close(); } else cout << "File cant be opened" << endl; return 0;
Soluzione
Dato che ogni linea è di lunghezza variabile, non c'è modo di indicizzare la riga particolare senza prima analizzare l'intero file.
Ma sospetto che il tuo programma vorrà manipolare righe e colonne casuali.Quindi inizierei ansando l'intero file.Metti ogni riga nella propria struttura di dati in un array, quindi indicizzare quella riga nell'array.
È possibile utilizzare "Strtok" per dividere l'input in righe, quindi di nuovo Strtok per dividere ogni riga in campi.
Altri suggerimenti
Se dovessi farlo, avrei scritto per la prima volta alcune funzioni che analizzano l'intero file e memorizzano i dati in una struttura dati appropriata (come un array o std :: mappa).Quindi utilizzerei la struttura dei dati per le operazioni richieste (come la ricerca o la modifica).Infine, scriverò la struttura dei dati in un file se ci sono modifiche.