Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sir Pereira

Cin Readline?

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.