Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
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


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Steelseries Arctis Nova Elite: le prime ...
30 anni di PlayStation da indossare: arr...
Amazon lancia gli Echo più potent...
Amazon rinnova la gamma Fire TV: ecco le...
Ring lancia le sue prime videocamere con...
Blink amplia la gamma di videocamere di ...
Jaguar Land Rover riprende (gradualmente...
HONOR inaugura il primo ALPHA Flagship S...
Yamaha: ecco il brevetto del 'finto moto...
'Console obsoleta e utenti ingannati': u...
Stop al ransomware su Google Drive, graz...
L'IA è la nuova interfaccia utent...
Battlefield 6: confermata la dimensione ...
Windows 11 porta il Wi-Fi 7 alle aziende...
Logitech MX Master 4 subito disponibile ...
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: 21:53.


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