13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 53 — #91<br />

✐<br />

2.5. Introdución a las cad<strong>en</strong>as<br />

2.4.3. Llamar a otros programas<br />

Mi<strong>en</strong>tras que el modo típico de usar un programa que lee de la <strong>en</strong>trada estándar<br />

y escribe <strong>en</strong> la salida estándar es d<strong>en</strong>tro de un shell script Unix o <strong>en</strong> un fichero batch<br />

de DOS, cualquier programa se puede llamar desde d<strong>en</strong>tro de un programa C o <strong>C++</strong><br />

usando la llamada a la función estándar system() que está declarada <strong>en</strong> el fichero<br />

de cabecera :.<br />

//: C02:CallHello.cpp<br />

// Call another program<br />

#include // Declare "system()"<br />

using namespace std;<br />

int main() {<br />

system("Hello");<br />

} ///:~<br />

Para usar la función system(), hay que pasarle un array de caracteres con la<br />

línea de comandos que se quiere ejecutar <strong>en</strong> el prompt del sistema operativo. Puede<br />

incluir los parámetros que utilizaría <strong>en</strong> la línea de comandos, y el array de caracteres<br />

se puede fabricar <strong>en</strong> tiempo de ejecución (<strong>en</strong> vez de usar un array de caracteres estático<br />

como se mostraba arriba). El comando se ejecuta y el control vuelve al programa.<br />

Este programa le muestra lo fácil que es usar C plano <strong>en</strong> <strong>C++</strong>; sólo incluya la<br />

cabecera y utilice la función. Esta compatibilidad asc<strong>en</strong>d<strong>en</strong>te <strong>en</strong>tre el C y el <strong>C++</strong> es<br />

una gran v<strong>en</strong>taja si está apr<strong>en</strong>di<strong>en</strong>do <strong>C++</strong> y ya t<strong>en</strong>ía conocimi<strong>en</strong>tos de C.<br />

2.5. Introdución a las cad<strong>en</strong>as<br />

Un array de caracteres puede ser bastante útil, aunque está bastante limitado.<br />

Simplem<strong>en</strong>te son un grupo de caracteres <strong>en</strong> memoria, pero si quiere hacer algo útil,<br />

debe manejar todos los pequeños detalles. Por ejemplo, el tamaño de un array de<br />

caracteres es fijo <strong>en</strong> tiempo de compilación. Si ti<strong>en</strong>e un array de caracteres y quiere<br />

añadirle más caracteres, t<strong>en</strong>drá que saber mucho sobre ellos (incluso manejo dinámico<br />

de memoria, copia de array de caracteres, y concat<strong>en</strong>ación) antes de conseguir<br />

lo que desea. Esta es exactam<strong>en</strong>te la clase de cosas que desearíamos que hiciera un<br />

objeto por nosotros.<br />

La clase string (cad<strong>en</strong>a) del <strong>C++</strong> Estándar ha sido diseñada para que se <strong>en</strong>cargue<br />

y oculte las manipulaciones de bajo nivel de los arrays de caracteres que antes<br />

t<strong>en</strong>ía que realizar el programador de C. Estas manipulaciones han sido una fu<strong>en</strong>te<br />

de constantes pérdidas de tiempo y errores desde los oríg<strong>en</strong>es del l<strong>en</strong>guaje C. Aunque<br />

hay un capítulo <strong>en</strong>tero dedicado a la clase string <strong>en</strong> el Volum<strong>en</strong> 2 de este libro,<br />

las cad<strong>en</strong>as son tan importantes y facilitan tanto la vida que las pres<strong>en</strong>taré aquí para<br />

usarlas lo antes posible <strong>en</strong> el libro.<br />

Para usar las cad<strong>en</strong>as debe incluir el fichero de cabecera . La clase s-<br />

tring se <strong>en</strong>cu<strong>en</strong>tra <strong>en</strong> el espacio de nombres std por lo que se necesita usar la<br />

directiva using. Gracias a la sobrecarga de operadores, la sintaxis del uso de las<br />

cad<strong>en</strong>as es muy intuitiva:<br />

//: C02:HelloStrings.cpp<br />

// The basics of the Standard <strong>C++</strong> string class<br />

#include <br />

53<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!