Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
appunti3s:oggetti_di_tipo_stream [2018/04/25 07:55]
127.0.0.1 external edit
appunti3s:oggetti_di_tipo_stream [2019/07/28 11:27] (current)
profpro
Line 1: Line 1:
 +>> per tornare all'​indice -> [[appunti3s:​linguaggio_c|Linguaggio C++]]
 +
 ====== Stream (flusso di dati) ====== ====== Stream (flusso di dati) ======
 Si sono già utilizzati gli operatori "​extractor"​ %%>>​%% e "​insertion"​ %%<<​%% nell pagine della  [[appunti3s:​programmazione_imperativa#​stdcin_-_stdcout_-_stdcerr|programmazione imperativa]]... Si sono già utilizzati gli operatori "​extractor"​ %%>>​%% e "​insertion"​ %%<<​%% nell pagine della  [[appunti3s:​programmazione_imperativa#​stdcin_-_stdcout_-_stdcerr|programmazione imperativa]]...
Line 9: Line 11:
 ===== Operatore Extractor >> ===== ===== Operatore Extractor >> =====
  
-Solo adesso, giunti a questo livello di studio, si può comprendere che Extractor è un operatore che si applica su due //​oggetti//:​ un oggetto Istream (stream di input, come std::cin) che rappresenta cioè i caratteri in ingresso al programma (come quelli provenienti dalla tastiera) e un oggetto dove i caratteri sono destinati a finire (come le variabili del programma). ​+Solo adesso, giunti a questo livello di studio, si può comprendere che Extractor è un operatore che si applica su due //​oggetti//:​ un oggetto Istream (stream di input, come std%%::%%cin) che rappresenta cioè i caratteri in ingresso al programma (come quelli provenienti dalla tastiera) e un oggetto dove i caratteri sono destinati a finire (come le variabili del programma). ​
 <​code>​std::​cin >> varstring;</​code>​ <​code>​std::​cin >> varstring;</​code>​
 {{ :​appunti3s:​extractor.png |}} {{ :​appunti3s:​extractor.png |}}
 ===== Operatore Insertion << ===== ===== Operatore Insertion << =====
  
-Anche questo è un operatore che si applica su due //​oggetti//:​ un oggetto Ostream (stream di output, come std::cout) che rappresenta i caratteri in uscita dal programma (come quelli diretti verso il monitor) e un oggetto nella memoria, da cui i caratteri provengono (come le variabili del programma o le costanti).+Anche questo è un operatore che si applica su due //​oggetti//:​ un oggetto Ostream (stream di output, come std%%::%%cout) che rappresenta i caratteri in uscita dal programma (come quelli diretti verso il monitor) e un oggetto nella memoria, da cui i caratteri provengono (come le variabili del programma o le costanti).
 <​code>​std::​cout << varstring << "​testo";</​code>​ <​code>​std::​cout << varstring << "​testo";</​code>​
  
Line 23: Line 25:
 ====== fstream ====== ====== fstream ======
  
-In modo analogo a std::cout e cin, il programmatore può definire nuovi oggetti stream di output (o di input) e successivamente applicare l'​operatore Insertion %%<<​%%(o Extractor %%>>​%%) per eseguire operazioni di output (o di input) per il programma.+In modo analogo a std%%::%%cout e cin, il programmatore può definire nuovi oggetti stream di output (o di input) e successivamente applicare l'​operatore Insertion %%<<​%%(o Extractor %%>>​%%) per eseguire operazioni di output (o di input) per il programma.
  
 <​code>​ <​code>​
Line 96: Line 98:
 flussoFile.exceptions(ios_base::​badbit); ​ // lancia un'​eccezione flussoFile.exceptions(ios_base::​badbit); ​ // lancia un'​eccezione
 </​code>​ </​code>​
 +
 +
 +====funzione open====
 +
 +<​code>#​include <​fstream></​code>​
 +
 +<file cpp 61.cpp>
 +#include <​string>​
 +#include <​iostream>​
 +#include <​fstream>​
 +
 +int main()
 +{
 +  std::string parola = "​ciao";​
 +  const std::string nomeFile = "​prova.txt";​ // sarebbe errore passare una stringa costante,
 +                                            // bisogna passare una costante stringa...  ​
 +  std::​fstream mioFile; ​
 +
 +  mioFile.open("​prova.txt",​ std::​ios_base::​in|std::​ios_base::​out);​ //aperto in lettura e scrittura
 +  std::cout << "Salvo una parola"​ << std::endl;
 +  mioFile << parola << std::endl;
 +
 +  mioFile.close();​ // opzionale. chiudo il collegamento con il file "​prova.txt"​
 +                   // e posso riutilizzare l'​oggetto per altri file...
 +
 +  return 0;
 +}
 +
 +</​file>​
 +
 +Il buffer serve per non scrivere un carattere alla volta nel file, ma per riempire un vettore e scrivere solo quando il vettore è pieno, oppure quando lo decide il programmatore con flush()
 +
  
 ===== Posizionamento ===== ===== Posizionamento =====
Line 114: Line 148:
 Provare a scrivere un programma che legge separatamente nome e cognome e poi mette questi dati all'​interno di un'​unica variabile usando l'​operatore concatenazione (+).  Provare a scrivere un programma che legge separatamente nome e cognome e poi mette questi dati all'​interno di un'​unica variabile usando l'​operatore concatenazione (+). 
  
-Provare a scrivere l'​esempio inverso… (aiutati da std::​stringstream in <​sstream>​) ​+Provare a scrivere l'​esempio inverso… (aiutati da std%%::%%stringstream in <​sstream>​) ​
  
-Provare a scrivere un programma che legge dati da un file in un buffer (aiutati da std::​stringstream in <​sstream>​)+Provare a scrivere un programma che legge dati da un file in un buffer (aiutati da std%%::%%stringstream in <​sstream>​)
  
-<code>+<file cpp 63.cpp>
 #include <​iostream>​ #include <​iostream>​
 #include <​sstream>​ #include <​sstream>​
Line 140: Line 174:
    ​return 0;  ​    ​return 0;  ​
 } }
-</code>+</file>
  
  
 +>> per tornare all'​indice -> [[appunti3s:​linguaggio_c|Linguaggio C++]]
  • appunti3s/oggetti_di_tipo_stream.1524635754.txt.gz
  • Last modified: 2018/04/25 07:55
  • by 127.0.0.1