Oppure

Loading
04/02/11 12:07
AlejandroJay
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:

int main(){
	char* support;
	//Support variables declaration
	int index;
	string name;
	int quantity;
	float price;
	string note;
	ifstream inputFile;
	inputFile.open("Hardware.txt", ios::in); //Enable read from file
		inputFile >> index;
		support = new char[25];
		inputFile.getline(support, 25);
		inputFile >> quantity >> price;
                name = support;
		cout << index << endl;
		cout << name << endl;
		cout << price << endl;
		cout << note << endl;
                return 0;
}


Tralasciate tutte le inclusioni di librerie e nomi standard :)
Ultima modifica effettuata da AlejandroJay 04/02/11 12:08
aaa
04/02/11 14:00
HeDo
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.
aaa