Mas Dame C++ Somos Programadores... (texto extraido de aca http://youtube.com/watch?v=9Iozx-6XymE)Bueno Pensando ke los metodos anteriores eran mas ke suficiente me ekivoke, aca encontre mas metodos ke ni los conocia, pero ke estan buenos, espero ke a uds les sirva esto.
Anexar Posiciones... (similar a insert)
este metodo anexa a str2 las posiciones desde el subindice 2 hasta el tamaño total de str1
#include <iostream.h>
#include <string.h>
void main() {
string str1="pachorra";
string str2="ca";
str2.append(str1, 2, str1.length()); // anexar...
cout<<"Muestra ";
cout<<"\""<<str2<<"\""; //Muestra "Cachorra"
getchar();
} //compilado en borland c++
Asignacion De Letras En Distintas PoscicionesComo el operador = y el [] estan sobrecargados es totalmente valido hacer lo siguiente...
...
str1="german";
str2="divs";
str1[4]=str2[1]='e'; //se modifican las posiciones 4 de la cadena y la posicion 1 de la cadena 2 por la letra 'e'
....
Notar la diferencia entre las comillas, una comilla simple es para una letra o sea lo que necesitamos para este caso mientras que las comillas dobles es para una cadena de caracteres...
El ejemplo mostraria a str1 como "germen" y a str2 como "devs"
Comparacion de rangoel metodo "at" lanza una excepcion "out_of_range" cuando se intenta de ir mas alla del final del objeto string, un ejemplo del codigo....
...
string str="hola";
for (int i = 0; i < str.length(); i++)
cout<<str.at(i); //si 'i' superaria por error el tamaño del string devolveria out_of_range...
...
Intercambio de ObjetosEste metodo sirve para intercambiar dos objetos string (no se si se puede con mas), esto se puede lograr con la funcion swap, un tipico ejemplo es este...
...
string str1="hola";
string str2="chau";
str1.swap( str2 );
....
el intercambio es evidente, en str1 pasaria a ser str2 y str2 pasaria a ser str11... haciendo esto se evita agregar un auxiliar e ir intercambiandolo manualmente
Funcion SubstrEsta funcion miembro lo que hace es recuperar una cadena de un string, como por ejemplo, se declara "aeroplano" a un string y si se utiliza esta funcion con sus parametros podemos obtener distintos string sacandole un pedazo al otro string.
....
string str1="aeroplano";
cout<<str1.substr(4,5)<<endl; //desde la posicion 4 contando 5 caracteres, esto mostraria "plano"
...
Otros Metodos De ComparacionTodos sabemos que los operadores de comparacion estan sobrecargados pero estos metodos nos limitan a comparar algunos tipos de casos, aca les dejo un par de metodos utiles para estas cosas.
La funcion miembro sirve para comparar lexicograficamente las cadenas y esta sobrecargada, asi que se les puede pasar distintos parametros, en los ejemplos les dejo como se utiliza, ah hace falta aclarar que el metodo
devuelve "-1" si es menor, 1 si es mayor y 0 si son iguales.......
string str1="hola";
string str2="holander";
int resultado= str1.compare(str2); // va a devolver un -1 porque str1 es menor que la 2
if (resultado == 0 )
cout<<"son iguales"<<endl;
else if (resultado < 0)
cout<<"str1 es menor que str2"<<endl;
else cout<<"str1 es mayor que str2"<<endl;
...
...
string str3="amo michigan";
string str4="alto michi";
int resultado= str4.compare(5,5,str3,4,5); //compara desde la pos 5 hasta 5 caracteres con str3
//desde la posicion 4 hasta 5 caracteres, en este caso son iguales
if (resultado == 0 )
cout<<"son iguales"<<endl;
else if (resultado < 0)
cout<<"str4 es menor que str4"<<endl;
else cout<<"str3 es mayor que str4"<<endl;
..
me faltan dos mas que son mezcalndo un poco esto pero una de ellas seria mas o menos asi, str1.compare(0, str1.size(), str2) lo que hace ese comparar la cadena 1 en su totalidad con la cadena 2
Bueno Hasta aca llegue por el dia de hoy, mas adelante voy a poner mas material, hasta ahora nos estaria faltando, metodos para buscar cadenas, caracteristicas de la clase string, sustitucion de caracteres, iteradores, etc...