Diferencia entre revisiones de «Introducción a Patrones de Diseño en C++ con Qt4/1.12 Flujos»

Contenido eliminado Contenido añadido
Paynalton (discusión | contribs.)
Sin resumen de edición
Paynalton (discusión | contribs.)
Línea 18:
 
 
* '''[http://cartan.cas.suffolk.edu/qtdocs/qtextstream.html QTextStream]''' cin(''stdin'');
* '''[http://cartan.cas.suffolk.edu/qtdocs/qtextstream.html QTextStream]''' cout(''stdout'');
* '''[http://cartan.cas.suffolk.edu/qtdocs/qtextstream.html QTextStream]''' cerr(''stderr'');
 
 
TheLos symbolssímbolos '''stdin''', '''stdout''', andy '''stderr''' comeprovienen fromde thela Clibrerñia standardestándar libraryde C. '''[http://cartan.cas.suffolk.edu/qtdocs/qdebug.html QDebug()]''' ises alsotambién aun aflujo stream,con withuna ainterface similar interface.
 
Also defined (in both <iostream> and <QTextStream>) are manipulators, such as flush and endl. Manipulators are implicit calls to functions that can change the state of a stream object in various ways. A manipulator can be a added to
 
Los manipuladores tambien están definidos (en ambos, ''<iostream>'' y ''<QTextStream>''), como '''flush''' y '''endl'''. Los manipuladores son llamadas explícitas a funciones que pueden cambiar el estado de un objeto de flujo en varias maneras. Un manipulador puede ser añadido para:
*
 
an output stream to change the way the output data is formatted.
*
 
* Un flujo de salida para cambiar la forma en que el dato de salida es formateado.
an input stream to change the way that the input data is interpreted.
* Un flujo de entrada para cambiar la manera en que el dato de entrada es interpretado.
 
====Ejemplo 1.11====
Example 1.11 demonstrates the use of manipulators applied to the standard output stream.
{{ejemplo2|Ejemplo 1.11 src/stdstreams/streamdemo.cpp Demostración del uso de manipuladores aplicados al flujo de salida estándar|
Salida:
 
4451 929 2345 1 true 1357 +1357 +1357.00 +1234.57 +1234.567800 +1.234568e+03 1.234568e+03
Example 1.11. src/stdstreams/streamdemo.cpp
 
#include <iostream>
 
|
int main() {
#include <iostream>
int main() {
using namespace std;
int num1(1234), num2(2345) ;
Línea 56 ⟶ 57:
<< showpoint << dub
<< endl;
dub =&#61; 1234.5678;
cout << dub << '\t'
<< fixed << dub << '\t'
Línea 62 ⟶ 63:
<< noshowpos << dub
<< endl;
}
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stdstreams/streamdemo.cpp}}
 
Output:
4451 929 2345 1 true 1357 +1357 +1357.00 +1234.57 +1234.567800 +1.234568e+03 1.234568e+03
 
 
Los flujos son usados para leer desde o escribir en archivos, conexiones de red y también cadenas. Una muy útil característica de los flujos es que ellos pueden hacer que sea secillo producir cadenas desde tipos de datos mixtos. En el Ejemplo 1.12 crearemos algunas cadenas desde numéricos y los escribiremos en un archivo.
 
====Ejemplo 1.12====
(link)
{{ejemplo2|Ejemplo 1.12. src/stl/streams/streams.cpp|
'''string strval &#61; strbuf.str();''' Convierte el flujo de carácteres en una cadena.
 
'''outf.open("midato");''' Crea (o sobreescribe) un archivo del disco para la salida.
Streams are used for reading from or writing to files, network connections, and also strings. One useful feature of streams is that they make it easy to produce strings from mixed types of data. In Example 1.12 we will create some strings from numerics and write them to a file.
|
 
[ . . . . ]
Example 1.12. src/stl/streams/streams.cpp
 
#include <iostream>
[ . . . . ]
#include <sstream>
 
#include <iostreamfstream>
#include <sstream>
int main() {
#include <fstream>
 
int main() {
using namespace std;
ostringstream strbuf;
 
int luckyloco =&#61; 7;
float pi=&#61;3.14;
double e=&#61;2.71;
/* AnUn in-memoryflujo streamdentro de la memoria */
strbuf << "luckynumbernúmero loco " << luckyloco << endl
<< "pi " << pi << endl
<< "e " << e << endl;
 
'''string strval =&#61; strbuf.str(); 1'''
cout << strval;
 
/* AnUn outputflujo filede streamarchivo de salida. */
ofstream outf;
'''outf.open("mydatamidato");''' 2
outf << strval ;
outf.close();
 
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stl/streams/streams.cpp}}
1
Convert the stringstream to a string.
 
2
Creates (or overwrites) a disk file for output.
 
Despues de que las cadenas han sido escritas, tenemos una variedad de opciones sobre como queremos leerlos. Podemos usar los operadores de entrada analógica con los que escribimos en nuestra salida, y dado que hay un espacio en blanco entre cada registro, el operador de inserción debería verse como en el Ejemplo 1.13
(link)
 
====Ejemplo 1.13====
After the strings have been written, we have a couple of choices of how to read them. We can use the analogous input operators that we wrote to output, and since there is whitespace between each record, the insertion operator might look like Example 1.13
{{ejemplo2|Ejemplo 1.13 src/stl/streams/streams.cpp||
 
[ . . . . ]
Example 1.13. src/stl/streams/streams.cpp
 
/* Un flujo de entrada de archivo */
[ . . . . ]
ifstream archivoentrada;
 
archivoentrada.open("midato");
/* An input file stream */
ifstreamstring infnuevacadena;
int loco2;
inf.open("mydata");
archivoentrada >> nuevacadena >> loco2;
string newstr;
intif lucky2(loco !&#61; lloco2)
cerr << "¡ERROR! número loco incorrecto" << endl;
inf >> newstr >> lucky2;
if (lucky != lucky2)
cerr << "ERROR! wrong lucky number" << endl;
float pi2;
infarchivoentrada >> newstrnuevacadena >> pi2;
if (pi2 !=&#61; pi) cerr << "¡ERROR! Wrong pi incorrecto." << endl;
double e2;
infarchivoentrada >> newstrnuevacadena >> e2;
if (e2 !=&#61; e) cerr << "e2: " << e2 << " e: " << e << endl;
infarchivoentrada.close();
 
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stl/streams/streams.cpp}}
 
(link)
 
En adición, podemos leer archivos línea por línea tratando a cada nueva línea como una cadena, justo como se muestra en el Ejemplo 1.14
In addition, we can read files line-by-line and deal with each line as a string, as shown in Example 1.14
 
Example 1.14. src/stl/streams/streams.cpp
 
====Ejemplo 1.14====
[ . . . . ]
 
{{ejemplo2|Ejemplo 1.14 src/stl/streams/streams.cpp||
/* Read line-by-line */
[ . . . . ]
inf.open("mydata");
while (not inf.eof()) {
/* Leer línea por getline(inf,línea newstr);*/
archivoentrada.open("midato");
cout << newstr << endl;
while (not archivoentrada.eof()) {
getline(inf, nuevacadena);
cout << nuevacadena << endl;
}
infarchivoentrada.close();
return 0;
}
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stl/streams/streams.cpp}}
 
 
(link)
----
{{nav2|Introducción a Patrones de Diseño en C++ con Qt4/1.11 Cadenas|Cadenas|Introducción a Patrones de Diseño en C++ con Qt4|Contenido|Introducción a Patrones de Diseño en C++ con Qt4/1.12.1 Ejercicios: Flujos|Ejercicios: Flujos|Introducción a Patrones de Diseño en C++ con Qt4/print}}