Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Stream di intere stringhe da file
Forum - C/C++ - Stream di intere stringhe da file

Avatar
AlejandroJay (Normal User)
Newbie


Messaggi: 2
Iscritto: 04/02/2011

Segnala al moderatore
Postato alle 13:07
Venerdì, 04/02/2011
Il mio problema è il seguente.
Ho un file di nome "Hardware.txt" che contiene varie righe. Ne posto solo una per semplicità:

3              Smerigliatrice elettrica          7                    57.98                   Attrezzo in quantità sotto la soglia di magazzino

Il primo numero indica l'indice
Poi c'è il nome dell'attrezzo, la quantità, il prezzo ed una descrizione.
Vorrei fare uno stream da file, solo che tutti i miei tentativi, utilizzando anche i manipolatori di I/O finiscono per darmi come risultato la stringa "Smerigliatrice" e non "Smerigliatrice elettrica". Conosco che c'è il metodo getline, che mi ignora i spazi bianchi ma continuo a non riuscirci. Vi posto il pezzo di codice incriminato:

Codice sorgente - presumibilmente C#

  1. int main(){
  2.         char* support;
  3.         //Support variables declaration
  4.         int index;
  5.         string name;
  6.         int quantity;
  7.         float price;
  8.         string note;
  9.         ifstream inputFile;
  10.         inputFile.open("Hardware.txt", ios::in); //Enable read from file
  11.                 inputFile >> index;
  12.                 support = new char[25];
  13.                 inputFile.getline(support, 25);
  14.                 inputFile >> quantity >> price;
  15.                 name = support;
  16.                 cout << index << endl;
  17.                 cout << name << endl;
  18.                 cout << price << endl;
  19.                 cout << note << endl;
  20.                 return 0;
  21. }



Tralasciate tutte le inclusioni di librerie e nomi standard :)

Ultima modifica effettuata da AlejandroJay il 04/02/2011 alle 13:08
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 15:00
Venerdì, 04/02/2011
se non c'è differenza tra il separatore delle parole (spazio) e il separatore dei campi NON c'è modo di fare quello che chiedi. Se invece il separatore dei campi è il '\t' (tab) puoi leggere tutta la stringa con getline e dividerla in token (parti) basandoti su quel separatore. Ultimo metodo sarebbe quello di racchiudere tra apici doppi le stringhe con spazi al loro interno, ma occorrerebbe un parser leggermente più smart.

PM Quote