Introdução
Neste laboratório, você aprenderá sobre strings em C++. Você aprenderá como definir e inicializar strings e como usar funções de string.
Neste laboratório, você aprenderá sobre strings em C++. Você aprenderá como definir e inicializar strings e como usar funções de string.
C++ suporta dois tipos de strings:
char, terminado com um caractere NULL '\0' (Hex 0). Também é chamada de Character-String ou string no estilo C.string introduzida no C++98.A classe string de "alto nível" é recomendada, porque é muito mais fácil de usar e entender. No entanto, muitos programas legados usavam C-strings; muitos programadores também usam C-strings de "baixo nível" para controle total e eficiência; além disso, em algumas situações, como argumentos de linha de comando, apenas C-strings são suportadas. Portanto, você pode precisar entender ambos os conjuntos de strings.
Para usar a classe string, inclua o cabeçalho <string> e "using namespace std".
Você pode declarar e inicializar uma string com um literal de string, inicializar com uma string vazia ou inicializar com outro objeto string. Por exemplo:
#include <string>
using namespace std;
string str1("Hello"); // Inicializa com um literal de string (Inicialização implícita)
string str2 = "world"; // Inicializa com um literal de string (Inicialização explícita via operador de atribuição)
string str3; // Inicializa com uma string vazia
string str4(str1); // Inicializa copiando de um objeto string existente
Por exemplo:
/* Testando a entrada e saída da classe string */
#include <iostream>
#include <string> // Necessário este cabeçalho para usar a classe string
#include <limits>
using namespace std; // Também necessário para <string>
int main() {
string message("Hello");
cout << message << endl;
// Entrada de uma palavra (delimitada por espaço) em uma string
cout << "Digite uma mensagem (sem espaço): ";
cin >> message;
cout << message << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
// limpa cin até a nova linha (necessário o cabeçalho <limits>)
// Entrada de uma linha em uma string
cout << "Digite uma mensagem (com espaços): ";
getline(cin, message); // Lê a entrada de cin em message
cout << message << endl;
return 0;
}
Saída:
Hello
Digite uma mensagem (sem espaço): hello
hello
Digite uma mensagem (com espaços): hello world
hello world

NOTAS:
#include <string>" para usar a classe string, e "using namespace std" pois string é definido no namespace std.cin >> aStr" lê uma palavra (delimitada por espaço) de cin (teclado) e atribui à variável string aStr.getline(cin, aStr) lê a linha inteira (até '\n') de cin e atribui a aStr. O caractere '\n' é descartado.cin, você pode usar a função ignore(numeric_limits<streamsize>::max(), '\n') para descartar todos os caracteres até '\n'. numeric_limits está no cabeçalho <limits>.Verificando o comprimento de uma string:
string str("Hello, world");
// ambos retornam o comprimento da string
cout << str.length() << endl; // 12
cout << str.size() << endl; // 12
Verificar se a string está vazia:
string str1("Hello, world");
string str2; // String vazia
// Verifica se a string está vazia.
cout << str1.empty() << endl; // 0 (false)
cout << str2.empty() << endl; // 1 (true)
Copiando de outra string: Simplesmente use o operador de atribuição "=".
string str1("Hello, world"), str2;
str2 = str1;
cout << str2 << endl; // Hello, world
Concatenando com outra string: Use o operador de adição "+" ou a adição composta "+=".
string str1("Hello,");
string str2(" world");
cout << str1 + str2 << endl; // "Hello, world"
cout << str1 << endl; // "Hello,"
cout << str2 << endl; // " world"
str1 += str2;
cout << str1 << endl; // "Hello, world"
cout << str2 << endl; // " world"
string str3 = str1 + str2;
cout << str3 << endl; // "Hello, world world"
str3 += "again";
cout << str3 << endl; // "Hello, world worldagain"
Lendo/Escrevendo caracteres individuais de uma string:
string str("Hello, world");
// Retorna o char no índice, o índice começa em 0. Realiza a verificação de limites do índice.
cout << str.at(0) << endl; // 'H'
cout << str[1] << endl; // 'e'
cout << str.at(str.length() - 1) << endl; // 'd'
str.at(1) = 'a'; // Escreve no índice 1
cout << str << endl; // "Hallo, world"
str[0] = 'h';
cout << str << endl; // "hallo, world"
Extraindo sub-string:
string str("Hello, world");
// Retorna a sub-string começando em beginIndex, de tamanho
cout << str.substr(2, 6) << endl; // "llo, w"
Comparando com outra string:
string str1("Hello"), str2("Hallo"), str3("hello"), str4("Hello");
cout << str1.compare(str2) << endl; // 1 'e' > 'a'
cout << str1.compare(str3) << endl; // -1 'h' < 'H'
cout << str1.compare(str4) << endl; // 0
// Você também pode usar o operador == ou !=
if (str1 == str2) cout << "Same" << endl;
if (str3 != str4) cout << "Different" << endl;
cout << boolalpha; // imprime bool como true/false
cout << (str1 != str2) << endl;
cout << (str1 == str4) << endl;
Procurando/Substituindo caracteres: Você pode usar as funções disponíveis em #include <algorithm>
Por exemplo:
#include <algorithm>
......
string str("Hello, world");
replace(str.begin(), str.end(), 'l', '_');
cout << str << endl; // He__o, wor_d
Exemplo
/* Exemplo sobre a função string do C++ */
#include <iostream>
#include <string> // usa a classe string
using namespace std;
int main() {
string msg = "hello, world!";
cout << msg << endl;
cout << msg.length() << endl; // comprimento da string
cout << msg.at(1) << endl; // char no índice 1
cout << msg[1] << endl; // o mesmo que acima
cout << msg.empty() << endl; // testa se a string está vazia
cout << msg.substr(3, 3) << endl; // sub-string começa em
// pos 3 de tamanho 3
cout << msg.replace(3, 3, "why") << endl; // substitui sub-string
cout << msg.append("end") << endl; // anexa no final
cout << msg + "end" << endl; // o mesmo que acima
cout << msg.insert(3, "insert") << endl; // insere após a pos 3
string msg1;
msg1 = msg; // copia
cout << msg1 << endl;
cout << "Digite uma linha: ";
getline(cin, msg); // lê uma linha de entrada
cout << msg << endl;
}
Saída:
hello, world!
13
e
e
0
lo,
helwhy world!
helwhy world!end
helwhy world!endend
helinsertwhy world!end
helinsertwhy world!end
Digite uma linha: a
a

String é outro tipo de dado importante além dos números. Nesta seção, falamos sobre o uso de strings, o C++ fornece muitos métodos úteis para lidar com strings, aprenda a usá-los com facilidade.