domingo, 10 de mayo de 2015

5 -Tutorial de C++ en español - Clase string




En este capítulo veremos como trabajar con cadenas de texto a través de la clase string, esta clase nos proporciona una serie de herramientas muy interesantes como podréis ver en cada uno de los ejemplos del capítulo.

Más información de string class.

string.cpp

#include <iostream>
#include <string>

using namespace std;

int main()
{
 //La clase string nos permite crear objetos que representan secuencias de caracteres
 string cadena1 = "El presidente del Gobierno es un corrupto";
 cout << cadena1 << endl;

 //Cambiar el valor del string cadena1
 cout << "Introduce el nuevo valor: ";
 getline(cin, cadena1);
 cout << "Has introducido lo siguiente: " << cadena1 << endl;
 
 //length() nos permite obtener el número de caracteres del string
 cout << "Longitud del string introducido: " << cadena1.length() << endl;
 
 //substr() nos permite extraer un substring del string seleccionado
 string cadena2 = "mafia";
 cout << "Extrayendo ma: " << cadena2.substr(0, 2) << endl;
 cout << "Extrayendo ia: " << cadena2.substr(3, 2) << endl;
 cout << "Extrayendo fi: " << cadena2.substr(2, 2) << endl;
 
 //find() busca la primera ocurrencia de un string en el string seleccionado
 string cadena3 = "busca algo dentro de mi";
 string buscar = "";
 cout << "introduce una busqueda para \"" << cadena3 << "\":";
 getline(cin, buscar);
 
 //size_t es un tipo capaz de representar el tamaño de cualquier objeto en bytes.
 //es utilizado como aguja cuando se realizan búsquedas en strings
 //nos regresará en este ejemplo un número entero con la posición de la primera 
 //ocurrencia de un string de lo contrario será igual a string::npos
 //npos: es un valor constante con el mayor valor posible para un elemento del tipo size_t
 
 size_t aguja = cadena3.find(buscar);
 if (aguja != string::npos)
 {
  cout << buscar << " ha sido encontrado en la posicion " << aguja << endl;
 }
 else
 {
  cout << buscar << " no ha sido encontrado" << endl;
 }
 

 system("PAUSE");
 return 0;
}