Diferencia entre revisiones de «Introducción a Patrones de Diseño en C++ con Qt4/1.12 Flujos»
Contenido eliminado Contenido añadido
Sin resumen de edición |
|||
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'');
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:
* Un flujo de salida para cambiar la forma en que el dato de salida es formateado.
* Un flujo de entrada para cambiar la manera en que el dato de entrada es interpretado.
====Ejemplo 1.11====
{{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
|
#include <iostream>
int main() {
using namespace std;
int num1(1234), num2(2345) ;
Línea 56 ⟶ 57:
<< showpoint << dub
<< endl;
dub
cout << dub << '\t'
<< fixed << dub << '\t'
Línea 62 ⟶ 63:
<< noshowpos << dub
<< endl;
}
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stdstreams/streamdemo.cpp}}
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====
{{ejemplo2|Ejemplo 1.12. src/stl/streams/streams.cpp|
'''string strval = strbuf.str();''' Convierte el flujo de carácteres en una cadena.
'''outf.open("midato");''' Crea (o sobreescribe) un archivo del disco para la salida.
|
[ . . . . ]
#include <iostream>
#include <sstream>
#include <
int main() {
using namespace std;
ostringstream strbuf;
int
float pi
double e
/*
strbuf << "
<< "pi " << pi << endl
<< "e " << e << endl;
'''string strval
cout << strval;
/*
ofstream outf;
'''outf.open("
outf << strval ;
outf.close();
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stl/streams/streams.cpp}}
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
====Ejemplo 1.13====
{{ejemplo2|Ejemplo 1.13 src/stl/streams/streams.cpp||
[ . . . . ]
/* Un flujo de entrada de archivo */
ifstream archivoentrada;
archivoentrada.open("midato");
int loco2;
archivoentrada >> nuevacadena >> loco2;
cerr << "¡ERROR! número loco incorrecto" << endl;
float pi2;
if (pi2 !
double e2;
if (e2 !
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stl/streams/streams.cpp}}
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
====Ejemplo 1.14====
{{ejemplo2|Ejemplo 1.14 src/stl/streams/streams.cpp||
[ . . . . ]
/* Leer línea por
archivoentrada.open("midato");
while (not archivoentrada.eof()) {
getline(inf, nuevacadena);
cout << nuevacadena << endl;
}
return 0;
}
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/stl/streams/streams.cpp}}
----
{{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}}
|