none
Ordenar Vetor Struct. RRS feed

  • Pergunta

  • Boa noite pessoal, seguinte estou tenso pois tenho que entregar um trabalho na faculdade de C++ estou recorrendo a quem puder me ajudar, entendo um pouco de programação mais com essa linguagem estou tendo dificuldade, pois meu foco é infra mas na faculdade tem que passar por isso.

    Tenho esse código:

    #include

     

    <conio.h>

    #include

     

    <iostream>

    #include

     

    <string>

    #include

     

    <cstdio>

    using

     

    namespace std;

    using

     

    namespace System;


    void

     

    ordena2(void){


    FILE *arq;

     

    int cont, cont1, cont2;

     

    struct stImoveis {

    string situacao;

    string tipo_imovel;

    string endereco;

     

    int numero;

    string complemento;

    string bairro;

    string municipio;

    string uf;

     

    int cep;

    string status;

     

    float condominio;

     

    float iptu;

     

    int qtd_quartos;

     

    float metragem;

    };


    stImoveis imoveis[100], auxImoveis, v_condominio[100], v_aluguel, st_bairro[100], aux;


    //Abrindo o arquivo

    arq = fopen(

    "dadosImoveis.dat", "r");

     

    if(!arq) {

    arq = fopen(

    "dadosImoveis.dat", "wb");

    fclose(arq);

    cout <<

    "\nArquivo criado\n\n";

    }

    else{

    cout <<

    "\nDados\n";

     

    while(fread(&auxImoveis, sizeof(auxImoveis),1,arq)){

     

     

    //cout << "\n" << "numero: " << cont;

     

    //cout << "\n" << "Bairro: " << auxImoveis.bairro;

    st_bairro[cont].bairro = auxImoveis.bairro;

    cout << st_bairro[cont].bairro;

    cont++;

     

     

     

    }

     

    }

    fclose(arq);

     

    //cout << cont;

    for

     

    (cont1=0; cont1<=(cont-2); cont1++){

     

    for(cont2=cont1+1; cont2<=(cont-1); cont2++){

     

    if((st_bairro[cont1].bairro) > (st_bairro[cont2].bairro)){

    aux = st_bairro[cont1].bairro;

    st_bairro[cont1].bairro = st_bairro[cont2].bairro;

    st_bairro[cont2].bairro = aux;

     

    }

    }

    }

    for

     

    (cont=0;cont=cont;cont++){

    cout << st_bairro[cont].bairro;

     

    //cout << cont;

    }

    _getch();

     

    }


    Dá esse erro: Error 3 error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\Users\Wansecurity\Documents\Visual Studio 2008\Projects\MOVELESS\MOVELESS\Ordena2.cpp 60 MOVELESS

    Será que alguém pode me dar um help?

    Desde já agradeço.

    Profissional 4 Estrelas Microsoft - Em busca da Certificação para 5ª estrela - http://www.wansecurity.com.br
    quarta-feira, 25 de novembro de 2009 00:45

Todas as Respostas

  • a variável aux é do tipo stImoveis

    e voce faz:


    aux = st_bairro[cont1].bairro;
    st_bairro[cont1].bairro = st_bairro[cont2].bairro;
    st_bairro[cont2].bairro = aux;
    

    bairro é do tipo std::string

    essa conversão não é possível.


    Abraços, cox
    cox
    quinta-feira, 26 de novembro de 2009 00:01
  • Realmente não dá para atribuir à String, isso não é possível. Use a função strcpy(stringcopy). Exemplo:

     

    strcpy(aux, st_bairro[cont1).bairro; //ou seja auxiliar recebera o conteúdo da va´riável após a virgula.

     

    Se eu estiver errado me corrijam, pois também estou aprendendo.

    terça-feira, 17 de maio de 2011 18:28