Ir ao conteúdo

C++ c/c++ struct string não é exibida


Ir à solução Resolvido por arfneto,

Posts recomendados

Postado

O programa não retorna nenhum erro ou warning, mas na exibição não mostra as strings no cmd final, as variáveis do tipo int são exibidas corretamente! 

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


using namespace std;
typedef struct{
    string nome;
    string cor;
    int pot;
    int vel;
    int velMax;
}Carro;
//Coleta informações
void Adiciona(string snome,string scor,int spot,int svelMax, int svel){
    Carro car;
    car.nome=snome;
    car.cor=scor;
    car.pot=spot;
    car.velMax=svelMax;
    car.vel=0;
};
//impressão 
void exibe(){
    Carro t;

    cout<<"Nome      : "<<t.nome<<endl;
    cout<<"Cor       : "<<t.cor<<endl;
    cout<<"Potencia  : "<<t.pot<<endl;
    cout<<"vel       : "<<t.vel<<endl;
    cout<<"Vel Maxima: "<<t.velMax<<endl;
}
int main()
{
    Carro carro1;

    Adiciona("Carro","Azul",350,250,220);//As duas strings não aparecem no retorno do cmd
    exibe();

    return 0;
}

Desde já agradeço qualquer ajuda!

OBS: Sou um aprendiz nessa area, desculpe se for algum erro óbvio!

  • Obrigado 1
Postado
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>


using namespace std;
typedef struct{
    string nome;
    string cor;
    int pot;
    int vel;
    int velMax;
}Carro;
//Coleta informações
void Adiciona(Carro &car, string snome,string scor,int spot,int svelMax, int svel){
    car.nome=snome;
    car.cor=scor;
    car.pot=spot;
    car.velMax=svelMax;
    car.vel=0;
};
//impressão 
void exibe(Carro t){
    
    cout<<"Nome      : "<<t.nome<<endl;
    cout<<"Cor       : "<<t.cor<<endl;
    cout<<"Potencia  : "<<t.pot<<endl;
    cout<<"vel       : "<<t.vel<<endl;
    cout<<"Vel Maxima: "<<t.velMax<<endl;
}
int main()
{
    Carro carro1;

    Adiciona(carro1, "Carro","Azul",350,250,220);//As duas strings não aparecem no retorno do cmd
    exibe(carro1);

    return 0;
}

Se você declarar a variável dentro da função, ela não persiste fora dela. Pesquise por escopo das variáveis.

 

  • Curtir 1
  • Amei 1
  • Solução
Postado
41 minutos atrás, Ninenome disse:
typedef struct{
    string nome;
    string cor;
    int pot;
    int vel;
    int velMax;
}Carro;

 

Não há razão para usar typedef em C++

 

42 minutos atrás, Ninenome disse:
//Coleta informações
void Adiciona(string snome,string scor,int spot,int svelMax, int svel){

 

Isso está construindo um Carro. Use um construtor. É o simples. Muito mais simples.

 

42 minutos atrás, Ninenome disse:
void exibe(){
    Carro t;

 

não use void e uma função sem argumentos. Passe parâmetros. Retorne algo.  exibe() vai exibir o que? passe o argumento com o endereço ou a referência do Carro em questão.

  • Curtir 1
  • Amei 1
Postado
25 minutos atrás, Flávio Pedroza disse:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>


using namespace std;
typedef struct{
    string nome;
    string cor;
    int pot;
    int vel;
    int velMax;
}Carro;
//Coleta informações
void Adiciona(Carro &car, string snome,string scor,int spot,int svelMax, int svel){
    car.nome=snome;
    car.cor=scor;
    car.pot=spot;
    car.velMax=svelMax;
    car.vel=0;
};
//impressão 
void exibe(Carro t){
    
    cout<<"Nome      : "<<t.nome<<endl;
    cout<<"Cor       : "<<t.cor<<endl;
    cout<<"Potencia  : "<<t.pot<<endl;
    cout<<"vel       : "<<t.vel<<endl;
    cout<<"Vel Maxima: "<<t.velMax<<endl;
}
int main()
{
    Carro carro1;

    Adiciona(carro1, "Carro","Azul",350,250,220);//As duas strings não aparecem no retorno do cmd
    exibe(carro1);

    return 0;
}

Se você declarar a variável dentro da função, ela não persiste fora dela. Pesquise por escopo das variáveis.

 

com a ajuda de vocês percebi tambem que eu estava construindo esse carro fora do construtor carro, muito obrigada!

  • Curtir 1
Postado
3 horas atrás, Ninenome disse:

com a ajuda de vocês percebi tambem que eu estava construindo esse carro fora do construtor carro, muito obrigada!


Ainda é um programa C.

 

Use algo assim

 

#include <iostream>
#include <ostream>
using namespace std;

struct Carro
{
    string nome;
    string cor;
    int    pot;
    int    vel;
    int    vel_max;

    Carro(string_view n, string_view cor, int pot, int vel, int vel_max)
        : nome(n), cor(cor), pot(pot), vel(vel), vel_max(vel_max){};
    Carro() : Carro("?", "?", 0, 0, 0){};  // padrão

    friend ostream& operator<<(ostream&,Carro&);
};

int main(void)
{
    Carro carro1; // carro padrão
    Carro outro( "Aston Martin DB5", "Prata", 350, 250, 220); // carro parametrizado
    cout << carro1;
    cout << outro;
    return 0;
}

ostream& operator<<(ostream& saida, Carro& C)
{
    saida << "Carro: \n"
          << "\tNome      : " << C.nome << "\n"
          << "\tCor       : " << C.cor << "\n"
          << "\tPotencia  : " << C.pot << "\n"
          << "\tVel       : " << C.vel << "\n"
          << "\tVel Maxima: " << C.vel_max << "\n\n";
    return saida;
}

 

Que mostra

 

Carro:
        Nome      : ?
        Cor       : ?
        Potencia  : 0
        Vel       : 0
        Vel Maxima: 0

Carro:
        Nome      : Aston Martin DB5
        Cor       : Prata
        Potencia  : 350
        Vel       : 250
        Vel Maxima: 220

 

Em C++ é mais fácil de compor essas coisas. Muito mais fácil.

 

 

Você nem escreveu um construtor para Carro

  • Obrigado 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!