Crear una tabla en C++

Aditya Raj 12 octubre 2023
  1. Funciones para crear una tabla en C++
  2. Crear una tabla con la alineación adecuada en C++
  3. Conclusión
Crear una tabla en C++

En C++, los datos se pueden mostrar en forma de tabla utilizando la biblioteca iomanip. También aprenderemos sobre varios métodos de la biblioteca iomanip que ayuda a imprimir datos en la tabla.

En este artículo, discutiremos cómo imprimir datos en forma de tabla en C++.

Funciones para crear una tabla en C++

En C++, para imprimir datos en la tabla, necesitamos imprimir las columnas del mismo ancho y usar la biblioteca iomanip. Si el valor en cualquier columna es menor que el ancho de la columna, debemos agregar relleno para que el ancho sea igual al de otras columnas.

La biblioteca iomanip proporciona muchos métodos para manipular la salida del programa. Solo aprenderemos sobre la función setfill() y la función setw(), ya que solo se requieren para imprimir datos en una tabla.

La función setw() se utiliza para establecer el ancho del campo de salida. La sintaxis de la función setw() se escribe como setw(número), donde número denota el número de caracteres que se establecerán en el ancho del campo de salida.

Código de ejemplo:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << setw(10) << "Monday" << endl;
  cout << setw(10) << "Tuesday" << endl;
  cout << setw(10) << "Wednesday" << endl;
  return 0;
}

Producción :

    Monday
   Tuesday
 Wednesday

Hemos asignado el ancho como 10 a los valores de salida al imprimir las palabras lunes, martes y miércoles.

En el caso de lunes, la salida agregará 4 espacios en blanco para que el ancho sea igual a 10, se agregan 3 espacios en blanco para martes, y en el caso de miércoles, se agrega un espacio en blanco.

La función setfill() se utiliza como carácter de relleno. La sintaxis de la función setfill() se escribe como setfill(char ch), donde ch es el carácter que debe rellenar los espacios negros.

Código de ejemplo:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << setfill('#') << setw(10) << "Monday" << endl;
  cout << setfill('#') << setw(10) << "Tuesday" << endl;
  cout << setfill('#') << setw(10) << "Wednesday" << endl;
  return 0;
}

Producción :

####Monday
###Tuesday
#Wednesday

Hemos asignado el ancho como 10 e impreso las palabras lunes, martes y miércoles. Sin la función setfill(), la salida habría contenido caracteres de espacio para hacer que la longitud de salida de las palabras sea 10, como se muestra en el ejemplo anterior.

Sin embargo, cuando usamos el método setfill() con el carácter # como argumento de entrada, los espacios en la salida se reemplazan por el carácter #.

Para lunes se utilizan 4 caracteres de relleno # para que el ancho sea igual a 10. En el caso de martes se utilizan 3 caracteres de relleno y para miércoles se utiliza 1 carácter de relleno.

El carácter de relleno se coloca en el lado izquierdo de forma predeterminada, pero también podemos usar std::left para imprimir el carácter de relleno en el lado derecho. Puede observar esto en el siguiente ejemplo, donde el carácter de relleno se imprime en el lado derecho del valor de salida.

Código de ejemplo:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << setfill('#') << left << setw(10) << "Monday" << endl;
  cout << setfill('#') << left << setw(10) << "Tuesday" << endl;
  cout << setfill('#') << left << setw(10) << "Wednesday" << endl;
  return 0;
}

Producción :

Monday####
Tuesday###
Wednesday#

Crear una tabla con la alineación adecuada en C++

Veamos un ejemplo para hacer una tabla en C++ con la alineación adecuada. En el siguiente ejemplo, hemos impreso la Edad y el Cumpleaños en la tabla en C++.

Hemos utilizado la función setw() de la biblioteca iomanip en C++ para establecer el ancho de las entradas.

Código de ejemplo:

#include <iomanip>
#include <iostream>
using namespace std;

class Birthday {
 public:
  string studentName;
  int studentAge;
  int birthDay;
  string birthMonth;
  string birthYear;

  Birthday(string name, int age, int day, string month, string year) {
    studentName = name;
    studentAge = age;
    birthDay = day;
    birthMonth = month;
    birthYear = year;
  }
};

int main() {
  Birthday recordArray[5] = {Birthday("Naman", 20, 13, "January", "1999"),
                             Birthday("Divesh", 23, 04, "May", "1996"),
                             Birthday("Nitish", 19, 29, "December", "2000"),
                             Birthday("Mandeep", 25, 19, "March", "1998"),
                             Birthday("Aman", 20, 29, "April", "1989")};

  cout << left << setw(10) << "Name" << left << setw(5) << "Age" << left
       << setw(8) << "Day" << left << setw(10) << "Month" << left << setw(4)
       << "Year" << endl;

  for (int i = 0; i <= 4; i++) {
    cout << left << setw(10) << recordArray[i].studentName << left << setw(5)
         << recordArray[i].studentAge << left << setw(8)
         << recordArray[i].birthDay << left << setw(10)
         << recordArray[i].birthMonth << left << setw(4)
         << recordArray[i].birthYear << endl;
  }
  return 0;
}

Producción :

Name      Age  Day     Month     Year
Naman     20   13      January   1999
Divesh    23   4       May       1996
Nitish    19   29      December  2000
Mandeep   25   19      March     1998
Aman      20   29      April     1989

Hemos establecido diferentes anchos en cada columna. El ancho de cada columna es mayor que el ancho del contenido.

Si el ancho de la salida es menor que el ancho de la columna, el contenido se desbordará. Considere el siguiente ejemplo.

Código de ejemplo:

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
  cout << left << setw(1) << "January" << endl;
  return 0;
}

Producción :

January

La salida se imprime en la tabla incluso si el tamaño del ancho se establece en un número menor que la longitud de la salida. En esta situación, la longitud de salida será igual a la longitud del valor de salida.

Conclusión

Hemos discutido cómo hacer una tabla usando la biblioteca iomanip en C++. Aprendimos sobre la sintaxis de la función setw() y la función setfill() de la biblioteca iomanip.

También discutimos el uso de estas funciones para hacer una tabla en C++. En el ejemplo, solo hemos utilizado el método setw() para decidir el ancho de la columna y la función setfill() para formatear la tabla con diferentes caracteres.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - C++ Table