Apéndice C: Bibliotecas estándar

Todos los compiladores C y C++ disponen de ciertas bibliotecas de funciones estándar que facilitan el acceso a la pantalla, al teclado, a los discos, la manipulación de cadenas, y muchas otras cosas, de uso corriente.

Hay que decir que todas estas funciones no son imprescindibles, y de hecho no forman parte del C. Pueden estar escritas en C, de hecho en su mayor parte lo están, y muchos compiladores incluyen el código fuente de estas bibliotecas. Nos hacen la vida más fácil, y no tendría sentido pasarlas por alto.

Existen muchas de estas bibliotecas, algunas tienen sus características definidas según diferentes estándar, como ANSI C o C++, otras son específicas del compilador, otras del sistema operativo, también las hay para plataformas Windows. En el presente curso nos limitaremos a las bibliotecas ANSI C y C++.

Veremos ahora algunas de las funciones más útiles de algunas de estas bibliotecas, las más imprescindibles.

Biblioteca de entrada y salida fluidas "iostream"

En el contexto de C++ todo lo referente a "streams" puede visualizarse mejor si usamos un símil como un río o canal de agua.

Imagina un canal por el que circula agua, si echamos al canal objetos que floten, estos se moverán hasta el final de canal, siguiendo el flujo del agua. Esta es la idea que se quiere transmitir cuando se llama "stream" a algo en C++. Por ejemplo, en C++ el canal de salida es cout, los objetos flotantes serán los argumentos que queremos extraer del ordenador o del programa, la salida del canal es la pantalla. Sintaxis:

cout << <variable/constante> [<< <variable/constante>...];

Completando el símil, en la orden:

cout << "hola" << " " << endl;

Los operadores "<<" representarían el agua, y la dirección en que se mueve. Cualquier cosa que soltemos en el agua: "hola", " " o endl, seguirá flotando hasta llegar a la pantalla, y además mantendrán su orden.

En esta biblioteca se definen algunas de las funciones aplicables a los "streams", pero aún no estamos en disposición de acceder a ellas. Baste decir de momento que existen cuatro "streams" predeterminados:

  • cin, canal de entrada estándar.
  • cout, canal de salida estándar.
  • cerr, canal de salida de errores.
  • clog, canal de salida de diario o anotaciones.

Sobre el uso de cin, que es el único canal de entrada predefinido, tenemos que aclarar cómo se usa, aunque a lo mejor ya lo has adivinado.

cin >> <variable> [>> <variable>...];

Donde cada variable irá tomando el valor introducido mediante el teclado. Los espacios y los retornos de línea actúan como separadores.

Ejemplo:

Escribir un programa que lea el nombre, la edad y el número de teléfono de un usuario y los muestre en pantalla.

#include <iostream>
using namespace std;

int main() {
  char Nombre[30];  // Usaremos una cadena para almacenar 
                    // el nombre (29 caracteres)
  int Edad;         // Un entero para la edad
  char Telefono[8]; // Y otra cadena para el número de 
                    // teléfono (7 dígitos) 
  
  // Mensaje para el usuario
  cout << "Introduce tu nombre, edad y número de teléfono" << endl;
  // Lectura de las variables
  cin >> Nombre >> Edad >> Telefono; 
  // Visualización de los datos leídos
  cout << "Nombre:" << Nombre << endl; 
  cout << "Edad:" << Edad << endl; 
  cout << "Teléfono:" << Telefono << endl;

  return 0; 
}