Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Sir Pereira

Cin Readline?

Recommended Posts

Sir Pereira

Boas pessoal, hoje aventurei-me pela descoberta de uma linguagem, o C++.

Como tal, com alguns tutoriais e um e-book ando a experimentar umas coisas.

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
//declaração de strings
string nome;
int idade;
string morada;
string localidade;
string pais;

cout << "Bem-vindo ao registo de novo utilizador.\n";
cout << "Insira o seu nome: ";
cin >> nome;
cin.getline(
cout << "Insira a sua idade: ";
cin >> idade;
cout << "Insira a sua morada: ";
cin >> morada;
cout << "Insira a sua localidade: ";
cin >> localidade;
cout << "Insira o seu pais: ";
cin >> pais;

cout << "\n\n";
//output

cout << "Chamas-te:" << nome << "\n";
cout << "Tens " << idade << " anos\n";
cout << "Moras na " << morada << "\n";
cout << "Vives em " << localidade << "\n";
cout << "Es de " << pais << "\n";
cout << endl;


system("PAUSE");
return 0;
}

Ali aquele cin só me lê um grupo de carácteres, e eu gostava que lesse a linha de input, como posso fazer isso?

E já agora, como posso colocar acentos no código? Visto que não são reconhecidos.

Abraço

Share this post


Link to post
Share on other sites
Sir Pereira

Estive a ver, mas não percebi bem como posso retornar a quantidade de carácteres do input? Se eu não sei quanto é que o user vai escrever..

EDIT:

Bom, alterei o meu código de modo a que fosse possível:

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
//declaração de strings
char nome[100];
int idade;
char morada[500];
char localidade[50];
char pais[50];

cout << "Bem-vindo ao registo de novo utilizador.\n";
cout << "Insira o seu nome: ";
cin.getline(nome,100);
cout << "Insira a sua idade: ";
cin >> idade;
cout << "Insira a sua morada: ";
cin.getline(morada,500);
cout << "Insira a sua localidade: ";
cin.getline(localidade,50);
cout << "Insira o seu pais: ";
cin.getline(pais,50);

cout << "\n\n";
//output

cout << "Chamas-te:" << nome << "\n";
cout << "Tens " << idade << " anos\n";
cout << "Moras na " << morada << "\n";
cout << "Vives em " << localidade << "\n";
cout << "Es de " << pais << "\n";
cout << endl;


system("PAUSE");
return 0;
}

Mas agora, quando vou a inserir a idade, depois aparecem-me duas perguntas na mesma linha: "Qual a sua morada? Qual a sua localidade?" E como é normal só me deixa espaço para responder a uma.

O cin penso que esteja a fazer um skip ao readline da morada. Como posso fazer ali um break?

Cumps

Share this post


Link to post
Share on other sites
Baderous

Isso deve-se ao facto de teres dados no buffer, que são aproveitados pelo getline da morada, de modo que tu nunca chegas a inserir a morada. Para limpares o buffer faz um cin.get() a seguir ao cin >> idade.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.