Strings

  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Strings as PDF for free.

More details

  • Words: 1,210
  • Pages: 5
Clase string en C++

El ANSI proporciona una clase string que evita muchos problemas asociados a vectores de caracteres simples (char* o char[]). Se puede definir un objeto de la clase string de una forma muy simple, tal y como se muestra en este ejemplo: #include <string> using namespace std; ... string first_name = "Bjarne"; string last_name; last_name = "Stroustrup"; string names = first_name + " " + last_name; cout << names << endl; names = last_name + ", " + first_name; cout << names << endl;

Funciones miembro La clase string tiene muchas funciones miembro. Algunas funciones básicas se describen a continuación Importante: el tipo size_type se puede considerar como int Un objeto string se puede definir sin un valor de inicialización, en

ese caso su valor inicial es una cadena vacía (longitud cero, ningún carácter): string str1; Un objeto de la clase string se puede también inicializar con •

una expresión string: string str2 = str1; string str3 = str1 + str2; string str4 (str2); // forma alternativa a string str4 = str2;

Inicialización (constructor) •

una cadena de caracteres constante:

string str4 = "hola allí"; string str5 ("adiós"); // forma alternativa a string str5 = "adiós"; •

un único carácter Desafortunadamente, los métodos previstos no funcionan:

string str6 = ' A'; // incorrecto string str7 ('A'); // también incorrecto •

En su lugar, debemos utilizar una forma especial con dos valores: string str7 (1, 'A');

// correcto

Los dos valores son: la longitud deseada de la cadena y un carácter para llenar la cadena. En este caso, estamos pidiendo una cadena de longitud uno, rellenada con el carácter A . •

una subcadena de otro objeto string: string str8 = "ABCDEFGHIJKL", str9(str8, 2, 9);

size_type length() const; size_type size() const;

length size

Ambas funciones devuelven la longitud (número de caracteres) del string. El tipo devuelto size_type es un tipo entero sin signo. (el nombre del tipo generalmente debe tener el nombre de la clase con el operador de alcance, como en string::size_type .) string str = "hola"; string::size_type len; len = str.length(); // len == 4 len = str.size(); // len == 4 const char * c_str();

c_str

Se utiliza para poder compatibilizar el nuevo tipo de dato con el antiguo char * string filename; cout << "introduce nombre del archivo: "; cin >> filename; ofstream outfile (filename.c_str()); outfile << "datos" << endl; string::pos insert(string::size_type pos, const string& s);

Inserta un string s en el objeto string actual, comenzando en la posición pos especificada. insert

string str11 = "abcdefghi"; string str12 = "0123"; str11.insert (3, str12); cout << str11 << endl; // "abc0123defghi" str12.insert (1, "xyz"); cout << str12 << endl; //"0xyz123" string::pos erase(string::size_type pos, size_type n);

erase

Suprime una subcadena de longitud n del string actual a partir del carácter de la posición pos . string str13 = "abcdefghi"; str13 << endl; //"abcdei"

replace

str13.erase (5,3);

cout <<

string::pos replace(size_type pos, size_type n, const string &s);

Suprime la subcadena que empieza en el carácter de la posición pos del string actual y con longitud n, y la substituye por la cadena s

string str14 = "abcdefghi"; string str15 = "XYZ"; str14.replace (4,2,str15); cout << str14 << endl; // "abcdXYZghi" size_type (const string &str, size_type posicion);

Busca la primera ocurrencia de str en la cadena actual, comenzando en la posición posicion. Si se encuentra, devuelva la posición del primer carácter. Si no, devuelve un valor especial (llamado string::npos ). El rfind hace lo mismo, pero devuelve la posición de la ocurrencia de la última vez que aparece la cadena especificada.

find

string str16 = "abcdefghi"; string str17 = "def"; string::size_type posicion = str16.find (str17,0); << posicion << endl; posicion = str16.find ("AB", 0); if (posicion == string::npos) cout << "no encontrado" << endl;

rfind

cout

string substr(size_type pos, size_type n);

Devuelve una subcadena del string actual, comenzando en la posición pos y teniendo una longitud de n : string str18 = "abcdefghi"; str19 = str18.substr (6, 2); cout << str19 << endl; //"gh"

substr

Funciones no miembro Además de las funciones miembro de la clase string, algunas funciones no miembro se diseñaron para trabajar con los strings; el más común de éstos es: istream& getline(istream& es, string& str, char delim ='\n');

Lee caracteres de un flujo de entradas en una string, parando cuando sucede una de las cosas siguientes: • • •

getline

Una condición end-of-file ocurre en el flujo de entradas Cuando el número máximo de los caracteres que pueden caber en una string se ha leído Cuando se encuentre el delimitador indicado por delim

El valor de vuelta es una referencia al flujo de entradas. Si la corriente se prueba como valor lógico (como en si o mientras que ), es equivalente verdad si se ha leído correctamente y falso en otro caso (e.g., fin del archivo). El uso más común de esta función es usarla "línea por la línea" para leer un archivo. Recuerde que el operador de extracción (>>) para cuando encuentra un delimitador cualquiera (como espacio en blanco o tabuladores), no necesariamente el extremo de una linea de entrada. La función getline puede leer líneas del texto conteniendo espacios en blanco. vector<string> vec1; string linea; vec1.clear(); ifstream infile ("stlìn.txt"); while (getline(infile, línea)) { vec1.push_back (línea);

} También se puede utilizar para leer una línea completa desde la entrada estándar: getline(cin, línea, '\n') Operadores Un número de operadores de C++ también se pueden usar con los objetos string:

El operador de asignación se puede utilizar de varias maneras: •

Asignando una cadena a otra string cadena1= "hola"; cadena1

=



cadena2 =

Asignando una cadena constante string cadena3;



string cadena2;

cadena3 = "adiós";

Asignando un carácter string cadena4; cadena4 = 'Z';

char ch = 'A';

cadena4 = ch;

+ es el operador de concatenación: •

dos objetos string string str1 = "hola"; string str2 = "allí"; string str3 = str1 + str2; //"hola allí"

+



un objeto string y una secuencia de caracteres constante string str1 = "hola";



un objeto cadena y un único carácter str5 = "el extremo";

+=

string str4 = str1 + "allí";

string str6 = str5 + '!';

"+ =" el operador combina las operaciones anteriores de asignación y de concatenación secuencia str1 = "hola"; str1 + = "allí";

== != < > <= >=

Los operadores de comparación devuelven un valor boleano (true/false) que indica si la relación especificada se verifica entre los dos operandos. Los operandos pueden ser: •

dos objetos string



<<

un objeto string y una secuencia de caracteres constante.

El operador de inserción envía el valor de un objeto string a un flujo de salida (e.g., cout ). secuencia str1 = "hola allí"; cout << str1 << endl;

>>

El operador de extracción lee una cadena de caracteres de un flujo de entrada y asigna el valor a un objeto string. secuencia str1; cin >> str1;

[]

El operador del subíndice tiene acceso a un carácter en una secuencia. Muy importante: No se pude utilizar para añadir caracteres al string, sólo para consultar el valor de un carácter o para modificarlo:

string str10 = "abcdefghi"; (subíndice) char ch = str10[3 ]; cout << ch << endl; // ' d ' str10[5] = ' X'; cout << str10 << endl; "abcdeXghi"

Related Documents

Strings
April 2020 19
Strings
May 2020 23
Strings
November 2019 20
Strings
November 2019 27
Strings Hommes
October 2019 40
Strings Notes.docx
April 2020 8