La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sesión 08: Flujo de datos 1. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad.

Presentaciones similares


Presentación del tema: "Sesión 08: Flujo de datos 1. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad."— Transcripción de la presentación:

1 Sesión 08: Flujo de datos 1

2 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Contenido 2 Introducción 1 Entrada y Salida de archivos 2 3 Argumentos de línea de comandos

3 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Introducción 3  El almacenamiento de datos en las variables de nuestros programas es temporal.  Al terminar todos los datos se pierden.  Para la conservación permanente de grandes datos:  Se utilizan el almacenamiento en archivos

4 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Introducción 4  C++ ve cada uno de los archivos como:  Flujo secuencial de bytes. hola mundo 686F6C61206D756E646F 012345 … … n-1

5 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Introducción 5  Cada archivo termina con un marcador de fin de archivo o de un número específico de bytes.  Al empezar la ejecución de un programa automáticamente se abren tres entornos y sus flujos asociados:  Entrada estándar: Permite que un programa lea datos por teclado.  Salida estándar: permite que un programa imprima datos en la pantalla.  Error estándar: Indicador de errores.

6 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Introducción 6 Capturar LeerGuardar Visualizar Los flujos proporcionan canales de comunicación entre los archivos y los programas

7 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Introducción 7  De manera estricta, C++ no define directamente una forma de escribir datos en la pantalla o en archivos ni cómo leerlos del teclado.  Entonces quién provee esta funcionalidad esencial?  Ésta es provista por bibliotecas de entrada y salida E/S.

8 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Introducción 8  Recordemos:  Biblioteca es una colección de archivos objeto que se pueden enlazar con nuestro código para incrementar su funcionalidad.  Ventaja:  Se pueden escribir programas independientes de plataforma, por lo menos en teoría.

9 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Contenido 9 Introducción 1 Entrada y Salida de archivos 2 3 Argumentos de línea de comandos

10 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia 10 Jerarquía Stream

11 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Clase derivada de ambas istream y ostream que provee funciones para escribir en pantalla y métodos de entrada. iostream Clase que permite manipular buffers de flujos. streambuf Clase que provee funcionalidad de entrada y salida sobre archivos. fstream 11 Librería Input/Output Stream

12 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Entrada y Salida de archivos 12

13 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia iostream  La librería iostream abstrae el problema del ingreso y salida de datos, modelando la entrada-salida como flujos de bytes, en serie uno tras otro, tanto de entrada como de salida.  Cuando incluimos la librería iostream, se crean e inicializan cuatro objetos estándar. 13 cin manipula la entrada estándar, el teclado. cout manipula la salida estándar, la pantalla. cerr manipula salida sin buffer al dispositivo estándar de error, la pantalla. clog manipula salida con buffer al dispositivo estándar de error.

14 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia iostream 14 1 Encapsula el problema con operadores de extracción e inserción de flujo. 2 operador de inserción <<, el flujo es de salida. 3 operador de extracción, >>, el flujo es de entrada 4 Encapsula los detalles técnicos dependientes de la plataforma.

15 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Objeto cin Istream  cin  Es un objeto global  Responsable de las entradas por teclado  Disponible al incluir la librería iostream a su programa.  operador de extracción >> es sobrecargado  cout  Es un objeto global  Responsable de mostrar en pantalla  Disponible al incluir la librería iostream a su programa.  operador de inserción << es sobrecargado. 15

16 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Entrada y Salida de archivos 16

17 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Buffers  Escribir o leer datos en el disco y en menor medida en la pantalla, es lento respecto a la velocidad del procesador.  Para resolver esto se pueden usar buffers, almacenamiento de memoria temporal que se llenan desde el programa sin tener que detener la ejecución hasta que se escriba dato por dato, y pueden ser vaciados independientemente por el sistema de salida. 17

18 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Buffers  Aplicaciones:  Buffer de teclado: memoria intermedia en la que se van almacenando los caracteres que un usuario teclea.  Buffer de Audio o video: streaming por Internet.  Buffer grabadoras de DVD: tienen un buffer para que no se pare la grabación.  Ejemplo análogo, tanque con válvulas de entrada y salida. 18

19 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia streambuf  La librería streambuf proporciona el interfaz entre los datos y las áreas de almacenamiento como la memoria o los dispositivos físicos.  Sin embargo las aplicaciones necesitan acceder al buffer de un stream, lo hacen a través del puntero almacenado en la clase ios.  acceso desde funciones superiores (ios) y sus clases derivadas, y casi nunca directamente a través de streambuf. 19

20 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Entrada y Salida de archivos 20

21 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia fstream  La libreria fstream proporciona una interfaz para leer y escribir datos a partir de flujos de entrada y salida de archivos.  Los objetos de esta clase mantiene internamente un puntero a un objeto tipo filebuf.  La clase filebuf se basa en la clase streambuf, y le proporciona las funciones necesarias para manipular entrada y salida de caracteres en ficheros. 21

22 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia fstream  Las clases que nos da C++ para el acceso a ficheros de texto son:  ifstream: clase disponible para leer del archivo ( i de input, f de file y stream).  ofstream: clase para escribir (o de output, f de file y stream).  fstream: sirve para las ambas tareas, lectura y escritura. 22

23 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia fstream  Algunos parametros que podemos usar dentro de las clases fstream:  app (append): Para añadir al final del fichero  binary (binary) Se abre el fichero como fichero binario.  in (input) El fichero se abre para lectura.  out (output) El fichero se abre para escritura  trunc (truncate) Si el fichero existe, se ignora su contenido y se empieza como si estuviera vacio. 23

24 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivo Modo Lectura  La apertura del fichero se puede hacer pasando parámetros al declarar la variable de estos tipos, o bien declarando la variable sin parámetros y luego llamando al método open(). 24 ifstream variable(“NombreArchivo"); ifstream variable; variable.open();

25 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivos 25 #include using namespace std; int main (void) { char cadena[128]; //Abre un fichero de entrada ifstream fe("nombre.txt"); fe.getline(cadena, 128); cout << cadena << endl; fe.close(); return 0; } #include using namespace std; int main (void) { char cadena[128]; //Abre un fichero de entrada ifstream fe("nombre.txt"); while(!fe.eof()){ fe >> cadena; cout << cadena << endl; } fe.close(); return 0; }

26 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivo Modo Escritura  La apertura del fichero se puede hacer pasando parámetros al declarar la variable de estos tipos, o bien declarando la variable sin parámetros y luego llamando al método open(). 26 ofstream variable(“NombreArchivo"); ofstream variable; Variable.open();

27 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivos 27 #include using namespace std; int main (void) { // Crea un fichero de salida ofstream fs("nombre.txt"); fs << "Hola mundo" << endl; fs.close(); return 0; } #include using namespace std; int main (void) { // Crea un fichero de salida ofstream fs("nombre.dat"); fs.write(“Hola Mundo”,20); fe.close(); return 0; }

28 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivo Aleatoriamente  Los ejemplo mostrados leen o a escriben desde el principio, y avanzan a medida que se lee o se escribe en ellos.  Entonces como hacemos para poder hacer lecturas o escrituras en cualquier punto del fichero??  Para eso disponemos de las funciones:  seekp: cambia la posición en la siguiente escritura.  seekg: cambia la posición en la siguiente lectura.  tellp: indica la posición en la que nos encontramos.  tellg: indica la posición del fichero en la que nos encontramos. 28

29 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivo Aleatoriamente  Algunos parametros que podemos usar detro de estas funciones:  ios::beg solicitar desplazamiento respecto al principio del archivo  ios::cur solicitar desplazamiento respecto a la posición actual dentro del archivo  ios::end solicitar desplazamiento respecto al final del archivo 29

30 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivos 30 #include using namespace std; int main() { int i, pos; char mes[][20] = {“Ene", “Feb“, “Mar“,"Abr","May“,"Jun“,"Jul","Ago“, "Sep“,"Oct“,"Nov“,"Dic"}; char cad[20]; ofstream fsalida("meses.dat"); cout << "Crear archivo de nombres de meses:" << endl; for(i = 0; i < 12; i++) fsalida.write(mes[i], 20); fsalida.close(); ifstream fentrada("meses.dat"); cout << "\nAcceso1" << endl; fentrada.read(cad, 20); do { cout << cad << endl; fentrada.read(cad, 20); } while(!fentrada.eof()); fentrada.clear(); cout << "\nAcceso2:" << endl; for(i = 11; i >= 0; i--) { fentrada.seekg(20*i); fentrada.read(cad, 20); cout << cad; pos = fentrada.tellg(); cout << " - " << pos/20 << endl; } return 0; }

31 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivo Modo E/S  Es posible trabajar con un stream simultáneamente en entrada y salida.  La clase fstream:  derivada de ifstream y ofstream,  dispone de todas las funciones necesarias para realizar cualquier operación de entrada o salida. 31

32 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Abrir Archivos 32 #include using namespace std; int main() { char l; long i, lon; fstream fich("prueba.dat", ios::in | ios::out | ios::trunc | ios::binary); fich << "abracadabra"; fich.seekg(0, ios::end); lon = fich.tellg(); cout << "Salida:" << endl; fich.seekg(0); for(i = 0; i < lon; i++) { fich.get(l); cout << l; } cout << endl; fich.close(); return 0; } for(i = 0; i < lon; i++) { fich.seekg(i); fich.get(l); if(l == 'a') { fich.seekp(i); fich << 'e'; }

33 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Comprobación de Archivos  Cuando estemos trabajando en la manipulación de archivos, en ocasiones se hace necesario visualizar el estado en el que se encuentren.  Podemos hacer uso de las banderas:  good(): si el stream con el que estamos trabajando está en un estado de error.  fail(): Devuelve true si la lectura o la escritura operación falla o en el caso de que ocurra un error de formato.  bad(): Devuelve true si la lectura o la escritura operación falla.  clear(): Elimina el estado de error  eof(): Devuelve true si un archivo abierto para la lectura ha llegado al final. 33

34 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Ifstream y Ofstream  Cuando se crea un flujo de archivo de salida, el comportamiento predeterminado es:  Se crea uno nuevo si no existe  Se trunca, borra y sobre-escribe si el archivo ya existe.  Este modo se puede modificar  Para agregar al archivo original (append)  Para no crear un archivo nuevo, en este caso si el archivo no existe la apertura falla. 34

35 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Tips para el manejo de Archivos 1 Chequee todos los archivos que se abren para verificar que se abrieron exitosamente. 2 Reutilice objetos ifstream y ofstream existentes. 3 Cierre todos los fstream cuando termine de usarlos. 35

36 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Contenido 36 Flujos 1 Librería Input/Output Stream 2 3 Argumentos de línea de comandos

37 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Para recibir argumentos en el programa Principal Los argumentos estan separados por espacios incluyendo el nombre del programa. algunPrograma arg1 arg2 El nombre del programa es el primer argumento. 37

38 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  Para usarlo declare main con argumentos  int argc -Contador de argumentos  char* argv[] -Vector de argumentos 38 Para recibir argumentos en el programa Principal Los nombres son convención pero pueden cambiar siempre y cuando se conserven los tipos y el orden. Son equivalentes: char**, char*[], char[][]. argv[0] es el nombre del programa, y argv[1] es el primer parámetro del programa. Son equivalentes: char**, char*[], char[][]. argv[0] es el nombre del programa, y argv[1] es el primer parámetro del programa.

39 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia 39 Para recibir argumentos en el programa Principal #include using namespace std; int main(int argc, char *argv[]) { cout << "Received " << argc << " arguments...\n"; for (int i=0; i<argc; i++){ cout << "argument " << i << ": " << argv[i] << endl; } return 0; }

40 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia 40

41 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Bibliografía  Pagina de Referencia lenguaje C++:  http://www.cplusplus.com/reference/iostream/ http://www.cplusplus.com/reference/iostream/  http://newdata.box.sk/bx/c/htm/ch16.htm#Headin g49 http://newdata.box.sk/bx/c/htm/ch16.htm#Headin g49  Sams Teach yourselft C++ in 21 days: http://newdata.box.sk/bx/c/htm/ch20.htm#Headin g1 41

42 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Anexo Informática II 2011/2 42 cin 1 cout 2

43 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  cin.get() con referencia a carácter:  Cuando una referencia a carácter (variable) se le pasa a cin.get(), esta se llena con el siguiente carácter en el flujo de entrada.  Nuevamente es posible concatenar 43 Objeto cin Istream #include using namespace std; int main() { char a, b, c; cout << "Enter three letters: "; cin.get(a).get(b).get(c); cout << "a: " << a << "\nb: " << b << "\nc: " << c << endl; return 0; }

44 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Tips uso de Cin  Use el operador de extracción (>>) cuando necesite saltar espacios en blanco.  Use cin.get() si necesita examinar todos los caracteres incluyendo los espacios en blanco. 44 #include using namespace std; int main() { char stringOne[256]; char stringTwo[256]; cout << "Enter string one: "; cin.get(stringOne,256); cout << "stringOne: " << stringOne << endl; cout << "Enter string two: "; cin >> stringTwo; cout << "StringTwo: " << stringTwo << endl; return 0; }

45 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  cin.getline():  hace lo mismo que cin.get()  Se diferencia en que cin.getline() elimina el terminador de la cadena. 45 Tips uso de Cin #include using namespace std; int main() { char stringOne[256]; char stringTwo[256]; char stringThree[256]; cout << "Enter string one: "; cin.getline(stringOne,256); cout << "stringOne: " << stringOne << endl; cout << "Enter string two: "; cin >> stringTwo; cout << "stringTwo: " << stringTwo << endl; cout << "Enter string three: "; cin.getline(stringThree,256); cout << "stringThree: " << stringThree << endl; return 0; }

46 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  cin.ignore() se usa para limpiar el flujo de entrada, ignorando el numero de caracteres especificados hasta encontrar el terminador especificado. 46 Tips uso de Cin #include using namespace std; int main() { char stringOne[255]; char stringTwo[255]; cout << "Enter string one:"; cin.getline(stringOne,255); cout << "String one" << stringOne << endl; cout << "Enter string two: "; cin.getline(stringTwo,255); cout << "String two: " << stringTwo << endl; cout << "\n\nNow try again...\n"; cout << "Enter string one: "; cin.getline(stringOne,255); cout << "String one: " << stringOne<< endl; cin.ignore(255,'\n'); cout << "Enter string two: "; cin.getline(stringTwo,255); cout << "String Two: " << stringTwo<< endl; return 0; }

47 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  cin.peek() :  Permite acceder al buffer permitiendo ver su interior sin necesidad de cargar el carácter en otra variable  cin.putback():  Permite acceder al buffer y modificar el carácter de turno. 47 Tips uso de Cin #include using namespace std; int main() { char ch; cout << "enter a phrase: "; while ( cin.get(ch) ) { if (ch == '!') cin.putback('$'); else cout << ch; while (cin.peek() == '#') cin.ignore(1,'#'); } return 0; } Estos dos últimos métodos resultan útiles porque permiten mirar los caracteres y dejarlos en el flujo de entrada. Este tipo de trucos se usan cuando se pasa texto a otro tipo de datos. Por ejemplo, en un compilador. Estos dos últimos métodos resultan útiles porque permiten mirar los caracteres y dejarlos en el flujo de entrada. Este tipo de trucos se usan cuando se pasa texto a otro tipo de datos. Por ejemplo, en un compilador.

48 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Anexo 48 cin 1 cout 2

49 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia 49 Objeto cout Ostream flush(): Escribe todo lo que haya en el buffer en la pantalla. endl llama a flush() automáticamente. Este método es conveniente cuando se debe estar seguro que el buffer esta vacio y sus contenidos son mostrados en pantalla. put(): Imprime un solo carácter en pantalla, también se puede concatenar. cout<<flush; cout.flush(); cout<<endl; #include using namespace std; int main() { cout.put('H').put('e').put('l').put('l').put('o').put('\n'); return 0; }

50 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  write(): Imprime un arreglo de caracteres hasta donde se le indique. Es similar al operador inserción (<<). 50 Objeto cout Ostream #include using namespace std; int main() { char One[] = "One if by land"; int fullLength = strlen(One); int tooShort = fullLength -4; int tooLong = fullLength + 6; cout.write(One,fullLength) << "\n"; cout.write(One,tooShort) << "\n"; cout.write(One,tooLong) << "\n"; return 0; }

51 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  width():El espacio por defecto de la salida es apenas suficiente para imprimir el carácter en la salida.  width() Genera un espacio en el buffer entre caracteres. Este solo cambia el ancho de la salida próxima y luego inmediatamente vuelve a su valor por defecto. 51 Objeto cout Ostream #include using namespace std; int main() { cout "; cout.width(25); cout << 123 << "< End\n"; cout "; cout.width(25); cout "; cout << 456 << "< End\n"; cout "; cout.width(10); cout << 123456 << "< End\n"; return 0; }

52 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia  fill(): Normalmente cout llena los campos vacios creados por width() con espacios. fill() llena un espacio establecido con un carácter definido. 52 Objeto cout Ostream #include using namespace std; int main() { cout "; cout.width(25); cout << 123 << "< End\n"; cout "; cout.width(25); cout.fill('*'); cout << 123 << "< End\n"; return 0; }

53 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad de Antioquia Banderas del Iostream  Usted puede acceder a dichas banderas con el método o manipulador setf(), y llevando como argumento las siguientes constantes puede dar formato a la salida en pantalla: 53 ios::showpoint ios::showpos ios::dec ios::oct ios::hex ios::left ios::right ios::internal. int main() { const int number = 185; cout << "The number is " << number << endl; cout << "The number is " << hex << number << endl; cout.setf(ios::showbase); cout << "The number is " << hex << number << endl; cout << "The number is " ; cout.width(10); cout << hex << number << endl; cout << "The number is " ; cout.width(10); cout.setf(ios::left); cout << hex << number << endl; cout << "The number is " ; cout.width(10); cout.setf(ios::internal); cout << hex << number << endl; cout << "The number is:" << setw(10) <<hex<<number<<endl; return 0; } También se puede concatenar con el operador de inserción. El metodo setw() es otro manipulador que permite establecer el ancho entre caracteres impresos.


Descargar ppt "Sesión 08: Flujo de datos 1. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad."

Presentaciones similares


Anuncios Google