Técnicas de Entrada de Strings
Métodos de Entrada para Strings em Estruturas
1. Entrada de Fluxo cin
O método mais comum para entrada de strings:
struct Person {
std::string name;
int age;
};
Person user;
std::cout << "Digite o nome: ";
std::cin >> user.name; // Entrada simples
2. Getline para Entrada de Linha Completa
Lidando com entradas com espaços:
std::cout << "Digite o nome completo: ";
std::getline(std::cin, user.name); // Captura a linha inteira
Comparação de Técnicas de Entrada
| Técnica |
Prós |
Contras |
| cin >> |
Simples |
Para em espaços em branco |
| getline() |
Captura linha completa |
Requer tratamento cuidadoso |
| cin.get() |
Flexível |
Sintaxe mais complexa |
Tratamento Avançado de Entrada
graph TD
A[Entrada de String] --> B{Método de Entrada}
B --> |Palavra Simples| C[cin Stream]
B --> |Linha Completa| D[getline()]
B --> |Entrada Complexa| E[Análise Personalizada]
3. Entrada Baseada em Construtor
Inicializar estruturas com métodos de entrada:
struct Student {
std::string name;
Student() {
std::cout << "Digite o nome do aluno: ";
std::getline(std::cin, name);
}
};
Estratégias de Tratamento de Erros
void safeStringInput(std::string& input) {
while(true) {
std::getline(std::cin, input);
if(!input.empty()) break;
std::cout << "Entrada inválida. Tente novamente: ";
}
}
Dica LabEx
No LabEx, recomendamos dominar múltiplas técnicas de entrada para lidar eficazmente com diversos cenários de entrada de strings.
Técnicas de Validação de Entrada
- Verificação de comprimento
- Validação do tipo de caractere
- Remoção de espaços em branco
- Tratamento de caracteres especiais
Exemplo de Entrada Abrangente
struct UserProfile {
std::string username;
void validateInput() {
while(username.length() < 3 || username.length() > 20) {
std::cout << "O nome de utilizador deve ter 3-20 caracteres: ";
std::getline(std::cin, username);
}
}
};