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
