Professional Documents
Culture Documents
Para poder usar estas funciones tenemos que incluir la cabecera: string.h Ejemplo de uso: #include <string.h> int main{ char txt1[100]="hola"; char txt2[100]="adios"; prinft("%s",txt1); ..... // vamos a copiar la cadena txt2 en la txt1 Copiar cadenas: strcpy Copia la el contenido cadena que esta en la derecha , en la variable que esta a la izquierda. Ejemplos: strcpy (txt1,"Holita"); strcpy (TablaDePc[c].nombre,"Compuradora del Profesor"); strcat Suma dos cadenas (las concatena), aade la 2 cadena al final de la cadena 1 y el resultado la guarda en la primera: Ejemplos: char txt1[100]="Hola" char txt2[100]=", venga hasta luego." printf("%s",txt1); strcat(txt1,txt2); prinft("%s",txt1; Dara de resultado, en la terminal: "Hola, venga hasta luego."
Comparar cadenas: strcmp Compara dos cadenas (en orden alfabticamente) y devuelve un nmero que es el resultado de esa comparacin. Si el resultado devuelto es: positivo: indica que la cadena 1 > cadena 2 0: indica que son iguales negativo: indica que la cadena 1< cadena 2 Nota: la letra "a" esta despues que la letra "A", ya que se usa el n del cdigo ASCII, para la ordenacin. ("a" es el nmero 97 en el cdigo ASCII, y "A" es el nmero es 65 en el cdigo ASCII) Longitud de Cadenas: strlen Te devuelve la longitud de una cadena, (el numero de caracteres que contiene) Ejemplo: Printf("%d",strlen("Pedrito")) En la terminal saldria 7 Ahora vamos a ver otra cabecera: ctype.h Pasar caracteres a mayusculas: int toupper(int caracter) -> pasa un caracter a mayusculas int tolower(int caracter) -> pasa un caracter a minusculas.
Ejemplos: Hacer una copia de txt1 y txt2. char txt1[100]="Hola"; char txt2[100]="adios"; char copia1[100]; char copia2[100]; strcpy(copia1,txt1); strcpy(copia2,txt2); // conversion de una cadena de caractares a minusculas for(c=0;c<strlen(copia1);c++){ copia1[c]=tolower(copia1[c]); } for(c=0;c<strlen(copia2);c++){ copia2[c]=tolower(copia2[c]); } // ahora que las dos las tenemos en minusculas ,( para no tener encuenta si contienen caracteres en mayusculas o minisculas ), las vamos a compararlas alfabticamete: if (strcmp(copia1,copia2)>0) { // copia1 es mayor que copia 2 } else { If (strcmp(copia1,copia2)=0) { // son iguales } else { //copia 2 es mayor que copia 1 } } Nota: Tambien podemos hacer la copia y ponerlo en minisculas en un solo for: for (c=0; c<strlen(txt2);c++){ copia2[c]=tolewer(txt2[c])); }
Contenido
[ocultar]
1 Arrays y cadenas de texto 2 Indices de un array 3 Dimensiones de un array o 3.1 Array unidimensional o 3.2 Array bidimensional 4 Declaracin de arrays en C, C++ o 4.1 Iteraciones dentro de un array (vector) o 4.2 Iteraciones dentro de un array (matriz) 5 Cadenas de caracteres o 5.1 La biblioteca string 6 Cadenas en C++ 7 Arrays en C++
Array:
Un array es un conjunto de datos del mismo tipo ordenados en forman lneal uno despus de otro. Los componentes de un array se han de referenciar por medio del nombre del array y un ndice de desplazamiento para indicar el componente deseado.
Una array uni-dimensional es aquel en donde los componentes son accesibles por medio de uno y solamente un ndice que apunte al componente requerido. Los arrays de este tipo son conocidos tambin con el nombre de vectores. Conceptualmente, podemos pensar en un array unidimensional como en una lista compuesta de lneas o filas en donde para referinos a una de ellas emplearemos un nmero para indicar la posicin de la misma dentro de la lista. Por ejemplo, consideremos el caso de la tabla o array VentaSemanal, la cual est pensada para registrar las ventas de cada uno de los das de la semana. De manera conceptual podemos ver el array como se muestra a continuacin: Nota: en C++ los arrays estn basados en 0 ( cero ), es decir, el primer elemento de un array se indexa mediante el 0, y el ndice para el ltimo de los elementos es igual al nmero de componentes menos uno.
array: VentaSemanal +------+ | dato | <-- componente 0, ( fila 0 ) |------| | dato | <-- componente 1, ( fila 1 ) |------| | dato | ... |------|
Si en el array VentaSemanal queremos que el elemento 4 ( por ejemplo ) contenga el valor de 8987 lo podemos lograr con la instruccin: VentaSemanal[4] = 8987; y el estado del array sera:
array: VentaSemanal +------+ | dato | |------| | dato | |------| | dato | |------| | dato | |------| | 8987 | <--- componente 4 |------| | dato | |------| | dato | |------|
Una array bi-dimensional es aquel en donde los componentes son accesibles por medio de una pareja de ndices que apunten a la fila y a la columna del componente requerido. Los arrays de este tipo son conocidos tambin con el nombre de matrices. Conceptualmente, podemos pensar en un array bidimensional como en una lista compuesta de filas y columnas, en donde para referirnos a una de ellas emplearemos un nmero para indicar la posicin de fila y otro nmero para indicar la posicin de la columna del componente deseado. Por ejemplo, consideremos el caso de la tabla o array VentaSemanaQ, la cual est pensada para registrar las ventas de cada uno de los das de la semana por cuatro semanas, o sea, una tabla de 7 x 4 elementos. De manera conceptual podemos ver el array como se muestra a continuacin:
array: VentaSemanaQ C O L U M N A S +--- componente ( 0, 0 ) |
F I L A S
+------+------+------+------+ | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | +------+------+------+------+ | +---- componente ( 6, 3 )
Si en el array VentaSemanaQ queremos que el elemento de la fila 4, columna 3 ( por ejemplo ) contenga el valor de 5000 lo podemos lograr con la instruccin: VentaSemanaQ[4][3] = 5000; y el estado del array sera:
array: VentaSemanaQ +--- componente ( 0, 0 ) | +------+------+------+------+ | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | 5000 | <-- componente ( 4, 3 ) |------|------|------|------| | dato | dato | dato | dato | |------|------|------|------| | dato | dato | dato | dato | +------+------+------+------+ | +---- componente ( 6, 3 )
donde,
tipo se refiere al tipo de datos que contendr el array. El tipo puede ser cualquiera de los tipos estndar (char, int, float, etc.) o un tipo definido por el usuario. Es ms, el tipo del array puede ser de una estructura creada con: struct, union y class. identificador se refiere al nombre que le daremos al array. tamao es opcional e indica el nmero de elementos que contendr el array. Si un array se declara sin tamao, el mismo no podr contener elemento alguno a menos que en la declaracin se emplee una lista de inicializacin. lista de inicializacin es opcional y se usa para establecer valores para cada uno de los componentes del array. Si el array es declarado con un tamao especfico, el nmero de valores inicializados no podr ser mayor a dicho tamao.
Ejemplos:
int intA[5]; long longA[5] = { 1, 2, 3, 4, 5 }; char charA[3] = { 'a', 'b', 'c' };
total += ventas[i]; printf( "%8.2f\n", ventas[i] ); } puts("--------"); printf("%8.2f\n", total ); system("pause"); return 0; } Esta es la salida del programa: Ventas de la semana ------------------123.50 234.60 345.45 321.40 345.00 456.65 0.00 -------1826.60
int f, c, t = 0 ; /* indices para filas, columnas y totales */ puts("Ventas de cuatro semanas"); puts("------------------------"); for (f=0; f<FILAS; f++) { for (c=0; c<COLS; c++) { totales[c] += VentaSemanaQ[f][c]; printf("%8.2f ", VentaSemanaQ[f][c] ); } puts(""); } puts("--------------------------------------"); for (t=0; t<COLS; t++) { printf("%8.2f ", totales[t] ); grantotal += totales[t]; } printf("\n\nGran total: %10.2f\n", grantotal); system("pause"); return 0; } Salida del programa: Ventas de cuatro semanas -----------------------123.50 234.60 345.45 321.40 345.00 456.65 123.50 234.60 345.45 321.40 345.00 456.65 123.50 234.60 345.45 321.40 345.00 456.65 123.50 234.60 345.45 321.40 345.00 456.65 0.00 0.00 0.00 0.00 -------------------------------------1627.90 2025.30 1627.90 2025.30 Gran total: 7306.40
1. char 2. char
En el ejemplo 1 se est declarando la variable nombre como una cadena de caracteres y cuyo contenido inicial es "Oscar". En el ejemplo 2 se est declarando la variable nombre2 como una cadena de caracteres y cuyo contenido inicial es { 'O', 's', 'c', 'a', 'r', '\0' };.
En ambos casos el resultado es el mismo, es decir, al final se obtiene la misma cadena, pero usted debe poner atencin al hecho de que toda cadena de caracteres en C, C++ debe terminar con el caracter NULL, que normalmente es igual a cero y se puede escribir como '\0'. Ahora bien, cuando usted usa la sintaxis mostrada en el ejemplo 1 no tiene que preocuparse por agregar el caracter NULL, ya que esto lo hace el compilador automticamente.
Sintaxis: char *strcat(char *dest, const char *src); Comentarios: strcat agrega la cadena src a dest, la funcin termina hasta haber encontrado en src el caracter de terminacin null. Ejemplo:
char nombre[] = "Oscar E."; char copia[80] = " Palacios"; strcat(copia, nombre); cout << copia << endl;
p = strchr(nombre, 'E'); if (p) { cout << "nombre contiene a E" << endl; cout << "indice = " << (p - nombre) << endl; } else cout << "E no est en nombre" << endl;
p = strrchr(nombre, 'E'); if (p) { cout << "nombre contiene a E" << endl; cout << "indice = " << (p - nombre) << endl; } else cout << "E no est en nombre" << endl;
p = strstr(s, "barco"); if (p) { cout << "barco est en s" << endl; cout << "indice = " << (p - s) << endl; } else cout << "barco no est en s" << endl;
entornos de desarrolo ) dan soporte a la clase cstring, que no debe confundirse con la <string.h>. Nota: Bloodshed Dev-C++ es un IDE (Editor con Depurador Integrado) para programar en C++ en un ambiente grfico para Windows, distibuido gratuitamente bajo licencia GPL GNU y usted puede encontrarlo aqu: www.bloodshed.net. Actualmente (febrero de 2008) se recomienda bajar la versin Dev-C++ 4.9.9.2. Nota:Como el Dev-c++ ya esta descontinuado, es recomendable usar su estencion Wx Dev-C++ que esta actualmente activa y es recomendable para muchos proyectos bajo el lenguaje C++, este programa tambien es licencia GPL, podras descargarlo desde=wxdsgn.sourceforge.net, y encontraras informacion de este aqui=es.wikipedia.org/wiki/WxDev-C%2B%2B.
Una de las ventajas que ofrece la clase cstring es que, a diferencia de las cadenas estndar, sta posee la capacidad de crecer o disminuir su tamao en tiempo de ejecucin. Adems, entre otras caracteristicas destacables, la clase string soporta operaciones de asignacin tales como: =, +, +=, etc.; y de comparacin tales como: ==, <=, etc. Para tener una idea bsica sobre las cadenas en C++ veamos el siguiente programa: Nota: en el programa se debe de observar el uso del operador de asignacin +=, algo que no es posible hacer con las cadenas estndar.
// Ejemplo: demostracin de la clase string // Compilado y ejecutado con exito en Bloodshed Dev-C++ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { string s("Hola, "); s += "cmo estan ustedes..."; cout << s << endl; system("PAUSE"); return EXIT_SUCCESS; }
Un estudio exhaustivo sobre la clase string requiere de un captulo completo, ya que la misma, segn el manual de referencia de C++, posee aproximadamente 33 mtodos y unos 7 constructores; adems de los atributos.
que vendr mostraremos aqu un ejemplo sencillo en donde se usar la clase plantilla vector.
// Ejemplo: demostracin de la clase vector // Compilado y ejecutado con exito en Bloodshed Dev-C++ #include <cstdlib> #include <iostream> #include <vector> using namespace std; int main(int argc, char *argv[]) { // creacin de un vector de enteros vector<int> v; // metiendo datos en el vector for (int x = 500; x<1000; x+=50) v.push_back(x); // desplegando los datos del vector for (int x = 0; x < v.size(); x++) cout << "v[" << x << "] = " << v[x] << endl; system("PAUSE"); return EXIT_SUCCESS; }