Lettura di un tipo specifico di input dal file

1

Ho un software che legge da un file. Ogni oggetto nel software accetta 7 input.

string string string float string float int

Ho un file di input. Contiene un numero di valori di input. Se l'input per un oggetto è come:

hss cscf "serving cscf" 32.5 ims 112.134 124
(Nota: quando la variabile di un oggetto ha bisogno di una stringa di più parole, ho usato "....", per una singola stringa di parole, è senza virgolette)

Come posso leggerlo usando ifstream? (Ho cercato su google ma non ho trovato.)

Ho provato a leggere l'intera riga usando getline e, ancora una volta, sono rimasto bloccato quando ho scoperto se si tratta di una singola parola o di più parole! Ho pensato di leggere una riga e poi cercare char per char. Se è il suo "", so che è una parola multipla, ma mi blocco quando si tratta di un intero o di un float. Per char , puoi usare

if(line[i]>='a'&&line[i]<='z')

ma come andare avanti quando integer o float è il prossimo valore?

Dai qualche suggerimento per questo.

    
posta Gauranga 13.08.2013 - 13:39
fonte

1 risposta

0

Puoi differenziare i numeri dalle parole osservando i caratteri al loro interno. Fondamentalmente, se una parola contiene esclusivamente [0-9.] , puoi supporre che sia un numero.

Allo stesso modo, se un numero presunto contiene solo [0-9] , è un numero intero. Altrimenti, è un float.

Attenzione ai casi limite:

  • Le culture contano. Ad esempio, in francese, non scrivi 19.95 , ma 19,95 . Ancora peggio, il numero 1 582.16 può essere scritto 1582.16 , 1,582.16 , 1.582,16 , ecc., A seconda della cultura.

  • Come fai a fuggire dalle stringhe? Cosa succede se una stringa multiword contiene un carattere di citazione?

  • Unicode può rendere le cose difficili, poiché i caratteri Unicode possono essere normalizzati e scomposti.

  • Che cosa succede se, un giorno, hai bisogno di avere una parola che abbia solo cifre, ma sia comunque interpretata come una parola?

Nota a margine: non è possibile riutilizzare un formato esistente, come JSON, con parser già scritti e testati? Vedi anche: Come vengono costruiti i nuovi formati di file?

    
risposta data 13.08.2013 - 13:53
fonte

Leggi altre domande sui tag