Me parece que o getline não aceita aquela notação. Eu sei que getline(cin, nome); funcionaria mas o problema é que eu tenho que obter mais de um nome. Com isso, gostaria de saber qual é a sintaxe para que eu possa obter nomes completos de alunos com getline. Obrigado pelo esclarecimento.
Você pode usar std::string e std::vector ? Eu recomendaria usar isso, em vez de usar vetores bidimensionais de caracteres, que são um pouco difíceis de lidar, e desperdiçam muito espaço.
Obrigado pela atenção thingol. O problema é que não conheço a manipulação de C++ através de std’s. Seria realmente difícil driblar o buffer com o uso de um vetor bidimensional de caracteres ?
Bom, vou mostrar como se faz com “string” e “vector”. Se você sabe mais Java que C++, vai ver que muitas coisas são mais parecidas com Java que com o C++ que você aprendeu na escola. Por exemplo, o “std::string” lembra um pouco o java.lang.String ou o java.lang.StringBuilder, e o “std::vector” lembra um pouco o java.util.ArrayList.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main (int argc, char* argv[]) {
vector<string> alunos;
cout << "Digite um nome de aluno por linha, e deixe uma linha em branco para terminar." <<
endl;
string linha;
int numeroAluno = 1;
do {
cout << "Aluno " << numeroAluno << ": ";
numeroAluno++;
getline(cin, linha);
if (linha != "")
alunos.push_back (linha);
} while (linha != "");
cout << "Foram digitados os nomes de " << alunos.size() << " alunos." << endl;
for (int i = 0; i < alunos.size(); ++i) {
cout << "Aluno " << (i+1) << ": " << alunos[i] << endl;
}
cout << "Fim." << endl;
}
Exemplo de saída:
C> alunos
Digite um nome de aluno por linha, e deixe uma linha em branco para terminar.
Aluno 1: Jose Ribamar
Aluno 2: Joaquim Manuel
Aluno 3: Bruno Henrique
Aluno 4: Carlos Eduardo
Aluno 5:
Foram digitados os nomes de 4 alunos.
Aluno 1: Jose Ribamar
Aluno 2: Joaquim Manuel
Aluno 3: Bruno Henrique
Aluno 4: Carlos Eduardo
Fim.
Na verdade, é mais fácil aprender a usar o vector e o string do que aprender a como manipular os arrays de chars. É claro que cedo ou tarde você vai precisar aprender a mexer com os arrays também (e ponteiros, e memória e toda aquela coisa tenebrosa)… mas, já que você usa C++, não custa começar pelo mais fácil.