Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-09-2008, 10:48   #1
d0c1Le.Killah
Junior Member
 
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
[C++]Caricare file di testo su string

Ciao a tutti. Ho un semplice quesito da porre, anche se comunque non ho trovato una soluzione (sebbene stia cercando su google inutilmente da un sacco di tempo).
In pratica ho bisogno di copiare il contenuto di un file su una stringa. Ho provato a usare questo codice:
Codice:
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char **argv) {
	char a[200];
	fstream f1;
	f1.open("a.txt",ios::in);
	if(!f1)
		exit(EXIT_FAILURE);
    while(f1 >> a)
		cout << a << endl ;
	f1.close();
	return 0;

}
ma ciò che io voglio è usare un oggetto string, non un vettore di char, e sopratutto la cui dimensione sia proporzionata al numero di caratteri nel file. Se scrivo
Codice:
while(f1 >> x)
con x di tipo string, ho un errore (non è previsto l'overloading con string credo)
Quali metodi usare?
Devo per forza usare char e poi convertire il risultato finale? non c'è niente di più pratico? E per allocare dinamicamente, devo necessariamente usare un for in cui sfoglio tutto il file e vedo la sua dimensione?
Infine ho questo dubbio: finora ho utilizzato stringhe dichiarate staticamente. Essendo molto lunghe (anche molte decine di kb), ho dovuto spezzarle in più linee di codice. Nel momento in cui caricassi tutto il file nella stringa, potrei avere problemi di compilazione o peggio ancora a run-time?

Grazie mille per l'aiuto!!!!!!!!
d0c1Le.Killah è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 12:33   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Se il file non è binario puoi usare la funzione getline di string:
Codice:
while(getline(stream, outputString))
...
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 14:23   #3
d0c1Le.Killah
Junior Member
 
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
Ciao. Il file non è binario.
Grazie per l'interessamento, ma neanche la soluzione da te data sembra funzionare. Ho degli errori compilando questo codice:
Codice:
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char **argv) {
	string a;
	fstream f1;
	f1.open("a.txt",ios::in);
	if(!f1)
		exit(EXIT_FAILURE);
	while(iostream::getline(f1, a))
		cout << endl ; //ad esempio, ma nn va lo stesso
	f1.close();
	return 0;

}
d0c1Le.Killah è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 14:40   #4
Noixe
Member
 
Iscritto dal: Aug 2008
Messaggi: 51
Puoi caricare una riga di un file di testo in una stringa cosi:


Codice:
#include <iostream>
#include <fstream>
#include <string>


int main() {
   
   std::string s;
   std::ifstream myfile ("prova.txt", std::ios_base::in);
   
   std::getline (myfile, s);
       
   std::cout << s << std::endl;
   
   return 0;
}
Ciao

Ultima modifica di Noixe : 19-02-2011 alle 07:33.
Noixe è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 14:45   #5
d0c1Le.Killah
Junior Member
 
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
GRAZIE! Sapevo erano 10 linee di codice, ma non le trovavo da nessuna parte era il metodo che cercavo... ora posso metterci tutti i controlli del caso.
d0c1Le.Killah è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 15:13   #6
Noixe
Member
 
Iscritto dal: Aug 2008
Messaggi: 51
Se ad esempio vuoi leggere riga per riga, puoi fare cosi:



Codice:
do {
     std::getline (myfile, s, '\n'); // Il terzo paramentro indica fino a quando deve leggere la stringa, in questo caso e' il carattere di ritorno a capo
    
    // fai quello che vuoi con il contenuto di s

}
while (!myfile.eof()); // Finché non raggiunge la fine del file.
Ciao
Noixe è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 16:01   #7
d0c1Le.Killah
Junior Member
 
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
Si beh certo, ora posso fare i vari giochetti... ovviamente col codice di prima leggevo fino alla fine del testo (EOF); con quest'ultimo invece scelgo il carattere delimitatore.
Ti ringrazio per l'interessamento, ora è tutto chiaro!
d0c1Le.Killah è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
ChatGPT falso distribuisce un malware tr...
America.gov è online: l'assistent...
Hanno creato una 'camera delle torture' ...
La folle prova di Toyota: caravan lancia...
PS Plus: Sony annuncia i tre giochi 'gra...
zk.money porta la privacy sul DAI, ma l'...
Novità in arrivo per la Tesla Mod...
WhatsApp introduce nuovi controlli paren...
Fire TV Stick da 25,99€, ma la 4K Select...
Microsoft e i data center: le comunità r...
Il Pentagono sceglie Musk e Luckey per l...
Mistral: il dibattito USA sulla sicurezz...
Scope elettriche Amazon: gli affari del ...
Blender arriva su Android: la versione p...
'Per il bene dell'umanità': Micha...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v