En aquest tema, aprendrem com manipular strings en C++. Els strings són una part fonamental de la programació, ja que ens permeten treballar amb text. En C++, els strings es poden gestionar de diverses maneres, incloent l'ús de la classe std::string
de la biblioteca estàndard. Explorarem les operacions bàsiques i avançades que es poden realitzar amb strings.
Continguts
Introducció a la Classe std::string
La classe std::string
és part de la biblioteca estàndard de C++ i proporciona una manera fàcil i segura de treballar amb cadenes de caràcters. A diferència dels arrays de caràcters, std::string
gestiona automàticament la memòria i ofereix moltes funcions útils.
Exemple Bàsic
#include <iostream> #include <string> int main() { std::string salutacio = "Hola, món!"; std::cout << salutacio << std::endl; return 0; }
Operacions Bàsiques amb Strings
Longitud del String
Per obtenir la longitud d'un string, podem utilitzar el mètode length()
o size()
.
Concatenació de Strings
Podem concatenar strings utilitzant l'operador +
o el mètode append()
.
std::string part1 = "Programació "; std::string part2 = "en C++"; std::string complet = part1 + part2; std::cout << complet << std::endl;
Accés i Modificació de Caràcters
Podem accedir i modificar caràcters individuals d'un string utilitzant l'operador []
o el mètode at()
.
Comparació de Strings
Podem comparar strings utilitzant els operadors de comparació (==
, !=
, <
, >
, etc.) o el mètode compare()
.
std::string str1 = "abc"; std::string str2 = "def"; if (str1 < str2) { std::cout << str1 << " és menor que " << str2 << std::endl; }
Substrings
Podem obtenir substrings utilitzant el mètode substr()
.
std::string text = "Programació en C++"; std::string sub = text.substr(0, 11); // "Programació" std::cout << sub << std::endl;
Funcions de Cerca
Podem buscar substrings dins d'un string utilitzant els mètodes find()
i rfind()
.
std::string text = "Programació en C++"; size_t pos = text.find("C++"); if (pos != std::string::npos) { std::cout << "'C++' trobat a la posició " << pos << std::endl; }
Conversió entre Strings i Altres Tipus
Podem convertir strings a altres tipus de dades i viceversa utilitzant les funcions de la biblioteca estàndard com std::stoi
, std::stof
, std::to_string
, etc.
std::string numStr = "123"; int num = std::stoi(numStr); std::cout << "Número: " << num << std::endl; float f = 3.14; std::string floatStr = std::to_string(f); std::cout << "String: " << floatStr << std::endl;
Exercicis Pràctics
Exercici 1: Concatenació de Noms
Escriu un programa que demani a l'usuari el seu nom i cognom, i després mostri el nom complet.
#include <iostream> #include <string> int main() { std::string nom, cognom; std::cout << "Introdueix el teu nom: "; std::cin >> nom; std::cout << "Introdueix el teu cognom: "; std::cin >> cognom; std::string nomComplet = nom + " " + cognom; std::cout << "El teu nom complet és: " << nomComplet << std::endl; return 0; }
Exercici 2: Comptar Vocals
Escriu un programa que compti el nombre de vocals en un string introduït per l'usuari.
#include <iostream> #include <string> int main() { std::string text; std::cout << "Introdueix un text: "; std::cin >> text; int count = 0; for (char c : text) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') { count++; } } std::cout << "Nombre de vocals: " << count << std::endl; return 0; }
Exercici 3: Invertir un String
Escriu un programa que inverteixi un string introduït per l'usuari.
#include <iostream> #include <string> int main() { std::string text; std::cout << "Introdueix un text: "; std::cin >> text; std::string invertit = ""; for (int i = text.length() - 1; i >= 0; i--) { invertit += text[i]; } std::cout << "Text invertit: " << invertit << std::endl; return 0; }
Conclusió
En aquesta secció, hem après com manipular strings en C++ utilitzant la classe std::string
. Hem vist com realitzar operacions bàsiques com la concatenació, l'accés i modificació de caràcters, la comparació, l'extracció de substrings, la cerca i la conversió entre strings i altres tipus de dades. També hem practicat aquests conceptes amb alguns exercicis pràctics. Amb aquests coneixements, estem preparats per abordar temes més avançats en la manipulació de dades en C++.
Curs de Programació en C++
Mòdul 1: Introducció al C++
- Introducció al C++
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Entrada i Sortida
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Introducció a les Funcions
- Paràmetres de Funció i Tipus de Retorn
- Sobrecàrrega de Funcions
- Recursivitat
Mòdul 4: Arrays i Strings
Mòdul 5: Punteres i Referències
- Introducció als Punteres
- Aritmètica de Punteres
- Punteres i Arrays
- Referències
- Assignació Dinàmica de Memòria
Mòdul 6: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació i Abstracció
Mòdul 7: Temes Avançats
- Plantilles
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Biblioteca de Plantilles Estàndard (STL)
- Expressions Lambda
- Multifil