Curso de C++ v2.0
Consultas, lista de correo 'C++ Con Clase' 'C++ Con Clase' página de entrada Librerías estándar C Tabla de contenido Contactar con Webmaster
*Introducción
*1 Toma de contacto
*2 Variables I
*3 Funciones I: Declaración y definición
*4 Operadores I
*5 Sentencias
*6 Declaración de variables
*7 Normas para la notación
*8 Cadenas de caracteres
*9 Conversión de tipos
*10 Variables II: Arrays
*11 Variables III: Estructuras
*12 Variables IV: Punteros 1
*13 Operadores II: Más operadores
*14 Operadores III: Precedencia
*15 Funciones II: Parámetros por valor y referencia
*16 Variables V: Uniones
*17 Variables VI: Punteros 2
*18 Operadores IV: De bits y condicional
*19 Definición de tipos
*20 Funciones III
*21 Funciones IV: Sobrecarga
*22 Operadores V: Sobrecarga
*23 El preprocesador
*24 Funciones V: Recursividad
*25 Variables VII: Modificadores
*26 Espacios con nombre
*27 Clases I: Definiciones
*28 Declaración de clases
*29 Constructores
*30 Destructores
*31 El puntero this
*32 Sistema de protección
*33 Modificadores para miembros
*34 Más sobre funciones
*35 Operadores sobrecargados
*36 Herencia
*37 Funciones virtuales
*38 Derivación múltiple
*39 Trabajar con ficheros
*40 Plantillas
*41 Punteros a miembros
*42 Castings
*43 Excepciones
*Ejemplos capítulos 1 a 6
*Ejemplos capítulos 8 y 9
*A Palabras reservadas C/C++
*B Trigrafos y símbolos alternativos
*C Librerías estándar
 . Librería "iostream"
 . Librería "stdio"
 . Función "printf"
 . Librería "stdlib"
 . Librería "ctype"
 . Librería "string"
*D Streams
<< < > >>

Librería rutinas de manipulación de cadenas "string"  

En esta librería se incluyen rutinas de manipulación de cadenas de caracteres y de memoria. De momento veremos sólo algunas de las que se refieren a cadenas.

Función "strlen()"

Calcula la longitud de una cadena.

Sintaxis:

size_t strlen(const char *s); 

"strlen" calcula la longitud de la cadena s.

Valor de retorno:

"strlen" devuelve el número de caracteres que hay en s, excluyendo el carácter nulo de terminación de cadena.

Ejemplo:

#include <iostream>
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena = "Una cadena C++ termina con cero";
 
   cout << "La cadena: [" << cadena << "] tiene " 
        << strlen(cadena) << " caracteres" << endl; 
   return 0; 
} 

Función "strcpy()"

Copia una cadena en otra.

Sintaxis:

char *strcpy(char *dest, const char *orig); 

Copia la cadena orig a dest, la copia de caracteres se detendrá cuando sea copiado el carácter nulo.

Valor de retorno:

"strcpy" devuelve el puntero dest.

Ejemplo:

#include <iostream> 
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena = "Cadena ejemplo"; 
   char cad[32];
 
   cout << strcpy(cad, cadena) << endl; 
   cout << cad << endl; 
   return 0; 
} 

Función "strcmp()"

Compara dos cadenas.

Sintaxis:

int strcmp(char *cad1, const char *cad2); 

Compara las dos cadenas, si la cad1 es mayor que cad2 el resultado será mayor de 0, si cad1 es menor que cad2, el resultado será menor de 0, si son iguales, el resultado será 0.

La comparación se realiza carácter a carácter. Mientras los caracteres comparados sean iguales, se continúa con el siguiente carácter. Cuando se encuentran caracteres distintos, aquél que tenga un código ASCII menor pertenecerá a la cadena menor. Por supuesto, si las cadenas son iguales hasta que una de ellas se acaba, la más corta es la menor.

Ejemplo:

#include <iostream> 
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena1 = "Cadena ejemplo 1"; 
   char *cadena2 = "Cadena ejemplo 2"; 
   char *cadena3 = "Cadena"; 
   char *cadena4 = "Cadena";
 
   if(strcmp(cadena1, cadena2) < 0) 
      cout << cadena1 << " es menor que " << cadena2 << endl; 
   else if(strcmp(cadena1, cadena2) > 0)
           cout << cadena1 << " es menor que " << cadena2 << endl; 
        else
           cout << cadena1 << " es igual que " << cadena2 << endl; 
   cout << strcmp(cadena3, cadena2) << endl; 
   cout << strcmp(cadena3, cadena4) << endl; 
   return 0; 
} 

Función "strcat()"

Añade o concatena una cadena a otra.

Sintaxis:

char *strcat(char *dest, const char *orig); 

"strcat" añade una copia de orig al final de dest. La longitud de la cadena resultante será strlen(dest) + strlen(orig).

Valor de retorno:

"strcat" devuelve un puntero a la cadena concatenada.

Ejemplo:

#include <iostream> 
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena1 = "Cadena de"; 
   char *cadena2 = " ejemplo"; 
   char cadena3[126];
 
   strcpy(cadena3, cadena1); 
   cout << strcat(cadena3, cadena2) << endl; 
   return 0; 
} 

Función "strncpy()"

Copia un determinado número de caracteres de una cadena en otra.

Sintaxis:

char *strncpy(char *dest, const char *orig, size_t maxlong); 

Copia maxlong caracteres de la cadena orig a dest, si hay más caracteres se ignoran, si hay menos se rellenará con caracteres nulos. La cadena dest no se terminará con nulo si la longitud de orig es maxlong o más.

Valor de retorno:

"strncpy" devuelve el puntero dest.

Ejemplo:

#include <iostream> 
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena = "Cadena ejemplo"; 
   char cad[32];
 
   strncpy(cad, cadena, 4);
   cad[4] = '\0'; 
   cout << cad << endl; 
   return 0; 
} 

Función "strncmp()"

Compara dos porciones de cadenas.

Sintaxis:

int strncmp(char *cad1, const char *cad2, size_t maxlong); 

Compara las dos cadenas igual que strcmp, pero sólo se comparan los primeros maxlong caracteres.

Ejemplo:

#include <iostream> 
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena1 = "Cadena ejemplo 1"; 
   char *cadena2 = "Cadena ejemplo 2"; 
   char *cadena3 = "Cadena"; 
   char *cadena4 = "Cadena";
 
   if(strncmp(cadena1, cadena2, 6) < 0) 
      cout << cadena1 << " es menor que " << cadena2 << endl; 
   else if(strncmp(cadena1, cadena2, 6) > 0)
           cout << cadena1 << " es menor que " << cadena2 << endl; 
        else
           cout << cadena1 << " es igual que " << cadena2 << endl; 
   cout << strncmp(cadena3, cadena2, 5) << endl; 
   cout << strncmp(cadena3, cadena4, 4) << endl; 
   return 0; 
} 

Función "strncat()"

Añade o concatena una porción de una cadena a otra.

Sintaxis:

char *strncat(char *dest, const char *orig, size_t maxlong); 

"strncat" añade como máximo maxlong caracteres de la cadena orig al final de dest, y después añade el carácter nulo. La longitud de la cadena resultante será strlen(dest) + maxlong.

Valor de retorno:

"strncat" devuelve un puntero a la cadena concatenada.

Ejemplo:

#include <iostream> 
#include <cstring>
using namespace std;
 
int main() { 
   char *cadena1 = "Cadena de"; 
   char *cadena2 = " ejemplo"; 
   char cadena3[126];
 
   strcpy(cadena3, cadena1); 
   cout << strncat(cadena3, cadena2, 5) << endl; 
   return 0; 
} 

Función "strtok()"

Busca dentro de una cadena conjuntos de caracteres o símbolos (tokens) separados por delimitadores.

Sintaxis:

char *strtok(char *s1, const char *s2); 

"strtok" considera la cadena s1 como una lista de símbolos separados por delimitadores de la forma de s2.

La primera llamada a "strtok" devuelve un puntero al primer carácter del primer símbolo de s1 e inserta un carácter nulo a continuación del símbolo retornado. Las siguientes llamadas, especificando null como primer argumento, siguen dando símbolos hasta que no quede ninguno.

El separador, s2, puede ser diferente para cada llamada.

Valor de retorno:

"strtok" devuelve un puntero al símbolo extraído, o NULL cuando no quedan símbolos.

Ejemplo:

#include <cstring>
#include <iostream>
using namespace std;
 
int main(void) {
   char entrada[32] = "abc,d,efde,ew,231";
   char *p;

   // La primera llamada con entrada
   p = strtok(entrada, ",");
   if(p) cout << p << endl;

   // Las siguientes llamadas con NULL
   while(p) {
      p = strtok(NULL, ",");
      if(p) cout << p << endl;
   }
   return 0;
}
<< < > >>