Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 />
✐