Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raficcha

Retornar string em função

Recommended Posts

Opa, beleza. Esou fazendo uma função para pegar o nome de um arquivo. Esta função deve retornar um "string"(const char *string).

 

const char *string;
char GetFileName(const char *filename){
    int cont = StrLen(filename)-1;
    int cont2;
    char nome[255];
    string retorno = "";
    int cont_retorno = 0;

    while (filename[cont] != '\\'){
        cont--;    
    }
    cont++;
    
    for (cont2 = cont; cont2 < StrLen(filename); cont2++){
        nome[cont_retorno] = filename[cont2];
        cont_retorno++;
    }
    nome[cont_retorno] = char(0);
    retorno = nome;
    return retorno;
}
porem o valor retornado pela função é um monte de caracteres estranahos. Se eu colocar antes do return retorno um printf("%s", retorno) o valor retorna corretamente.

 

alguem pode me ajudar a explicar o que está acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Raficcha, tudo certo?

 

Cara, pra quem ja mechia com threads, você não poderia fazer erros deste tipo!

você leu o que o compilador te falou?

Leia! Ele vai apontar todos os erros.

você usa o gcc? se sim, compile com as opções -Wall -Wextra

 

pra já:

const char* string;
O que é isso?

 

Não se esqueça como se declaram funções:

tipo_de_retorno nome_da_função(tipo_par1 par1, tipo_par2 par2, ..., tipo_parN parN);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ow, fiz uma confusão ali em cima, no cabeçalho da função tem "char", mas na verdade é "string".

 

ow, pra mim utilizar strings em C++ tenho que utilizar #include <iostream.h> que aumenta em mais de 400Kb o programa. Ja tentei utilizar so #include <strings.h> e #include <string.h> mas não tem o tipo string.

 

então defino o tipo typedef const char *string. É assim que eu utilizo as strings. Isso esta muito errado? Bah, me perdi logo nas strings..

 

bom, aquele char no começo do cabeçalho nem sei pq eu coloquei.. a função que eu tenho aqui é

 

typedef const char *string;

string GetFileName(string filename){
    int cont = StrLen(filename)-1;
    int cont2;
    char nome[255];
    string retorno = "";
    int cont_retorno = 0;

    while (filename[cont] != '\\'){
        cont--;    
    }
    cont++;
    
    for (cont2 = cont; cont2 < StrLen(filename); cont2++){
        nome[cont_retorno] = filename[cont2];
        cont_retorno++;
    }
    nome[cont_retorno] = char(0);
    retorno = nome;
    return retorno;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é desaconselhável o uso de ponteiros, para strings/arrays, em c++.

Para strings, possuimos a std::string, uma classe MUITO mais fácil de usar do que os antigos char* do C.

Para arrays, eu aconselho o uso de std::vector. É mais seguro e vai prevenir muitos segmentation faults.

 

As strings:

http://www.cplusplus.com/reference/string/string/

 

Detalhe, cabeçalhos do c++ não possuem o sufixo "h"

Use:

#include <iostream>

#include <string>

#include <fstream>

...

Para usar cabeçalhos do C, apenas adiciona a letra 'c' ao início do nome:

#include <cmath> // o mesmo que dizer #include <math.h> EM C

#include <cstdlib>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei utilizar std::string, mas o compilador me disse que "string" não é um menbro de std...

 

como utilizo?

 

 

tentei assim

 

std::string teste;

Compartilhar este post


Link para o post
Compartilhar em outros sites

você incluiu <string> no seu código?

(#include <string>)

 

você está compilando com o que?

Se ainda restarem problemas, poste o código.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.