Quetzalma Posted December 6, 2007 at 10:39 PM Report Share #152777 Posted December 6, 2007 at 10:39 PM Boas Eu tou a iniciar-me em C++ e deparei-me com um problema: Eu quero que o utilizador insira uma frase e para isso sei que o tenho que atribuir a um array de chars(gets), mas eu queria saber se existirá alguma maneira para saber quantos caracteres o utilizador escreveu e definir o array com esse tamanho para assim poupar espaço na memória que pode nunca ver a ser usado. Espero que tenha sido explicito no que pretendia perguntar. Link to comment Share on other sites More sharing options...
filipemm Posted December 6, 2007 at 10:51 PM Report Share #152785 Posted December 6, 2007 at 10:51 PM Não sei se é bem isto que queres mas existe uma função que retorna o tamanho da string.. #include <string.h> strlen(string) Link to comment Share on other sites More sharing options...
Quetzalma Posted December 6, 2007 at 10:53 PM Author Report Share #152786 Posted December 6, 2007 at 10:53 PM obrigado por me lembrares disso xD já não me lembrava, mas mesmo assim ainda falta saber como definir o tamanho de um array Link to comment Share on other sites More sharing options...
filipemm Posted December 6, 2007 at 11:01 PM Report Share #152788 Posted December 6, 2007 at 11:01 PM Pois isso já não sei.. como nao sou nenhum expert nisto.. Mas, por exemplo, no mysql há um tipo de dados que é o varchar que se ajusta ao que o utilizador digita... Não sei se em C++ há disso.. penso que nao.. Link to comment Share on other sites More sharing options...
saunde Posted December 6, 2007 at 11:33 PM Report Share #152800 Posted December 6, 2007 at 11:33 PM Porque não usar o tipo String ? Não precisas de memorizar num array de char's memorizas numa string, realmente uma string não é mais que um char * mas assim não necessitas de te preocupar com o parâmetro. Um blog :Sem Cafeína Link to comment Share on other sites More sharing options...
filipemm Posted December 6, 2007 at 11:37 PM Report Share #152801 Posted December 6, 2007 at 11:37 PM Existe o tipo string em C?? Pensava que as strings tinham que ser sempre arrays de caracteres... Link to comment Share on other sites More sharing options...
Quetzalma Posted December 6, 2007 at 11:39 PM Author Report Share #152802 Posted December 6, 2007 at 11:39 PM eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado. enfim o meu objectivo é o seguinte: o utilizador insere uma frase depois insere uma palavra e ele procura na frase a posição dessa palavra se existir devolve a posição da 1ª letra se não existir, diz ao utilizador que não encontrou para isto tou a usar 2 fors encadeados e mais uns ifs e outras coisas, mas simplesmente gostava de saber como definir o tamanho de um array já depois do programa ter começado a correr Link to comment Share on other sites More sharing options...
saunde Posted December 6, 2007 at 11:39 PM Report Share #152803 Posted December 6, 2007 at 11:39 PM Sim C++ tem strings.... Aqui vai a bibilia 🙂 http://www.cppreference.com/cppstring/index.html Alguma dúvida posta 🙂 Um blog :Sem Cafeína Link to comment Share on other sites More sharing options...
falk0n Posted December 6, 2007 at 11:54 PM Report Share #152807 Posted December 6, 2007 at 11:54 PM eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado. enfim o meu objectivo é o seguinte: o utilizador insere uma frase depois insere uma palavra e ele procura na frase a posição dessa palavra se existir devolve a posição da 1ª letra se não existir, diz ao utilizador que não encontrou para isto tou a usar 2 fors encadeados e mais uns ifs e outras coisas, mas simplesmente gostava de saber como definir o tamanho de um array já depois do programa ter começado a correr definir o tamanho de um array em tempo de execucao e facil so temos de usar malloc (eu penso que se pode utilizar malloc's em c++ mas nao tenho a certeza ja que o cplusplus foi um plus plus ao c 🙂 ) Link to comment Share on other sites More sharing options...
Quetzalma Posted December 6, 2007 at 11:54 PM Author Report Share #152808 Posted December 6, 2007 at 11:54 PM pode-se, eu ja tentei mas deu erro 🙂 Link to comment Share on other sites More sharing options...
falk0n Posted December 7, 2007 at 12:04 AM Report Share #152809 Posted December 7, 2007 at 12:04 AM seria possivel reproduzires o erro e colocares aqui. ja faz algum tempo que nao mexo com c++ mas acho que ainda me lembro de algumas coisas se me puderes mostrar um pouco do codigo ou do erro talvez tenha uma nocao do que se possas estar a fazer mal. Nuno Martins Link to comment Share on other sites More sharing options...
Quetzalma Posted December 7, 2007 at 12:07 AM Author Report Share #152810 Posted December 7, 2007 at 12:07 AM agora já é tarde e vou-me deitar, mas amanha logo ponho aqui isso Link to comment Share on other sites More sharing options...
shumy Posted December 7, 2007 at 12:20 AM Report Share #152811 Posted December 7, 2007 at 12:20 AM epá... é C++ quase de certeza que estas a usar STL, se não estas é aconselhavel. Exemplo relampago: #include <string> #include <iostream> using namespace std; int main(void){ string xpto; cin>>xpto; cout<<xpto; return 0; } Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática! Link to comment Share on other sites More sharing options...
falk0n Posted December 7, 2007 at 12:31 AM Report Share #152812 Posted December 7, 2007 at 12:31 AM sim penso que e possivel usar o malloc, provavelmente devemos conseguir aceder a esta funcao atraves do header cstdlib. outra maneira possivel e char *s=new char[n]; // sendo n o numero de posicoes que queras colocar no teu array de char's. nao testei nada disto mas penso que era assim que eu fazia quando andei a mexer em c++ boas programacoes. ps. quando ja nao necessitares da memoria nao te esquecas de fazer free ou de fazeres um delete []. Link to comment Share on other sites More sharing options...
TheDark Posted December 7, 2007 at 01:31 AM Report Share #152815 Posted December 7, 2007 at 01:31 AM O free utiliza-se para libertar memória alocada pelo malloc (e afins); o delete utiliza-se para libertar memória alocada pelo new. Não misturem, não é opcional. eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado. O tipo string existe em C++ através da Standard Templates Library. Quem te disse que o tipo string não existe em C++ não te enganou, de facto não existe um tipo string intrínseco à linguagem. Mas em STL está definido o tipo string. Desaparecido. Link to comment Share on other sites More sharing options...
falk0n Posted December 7, 2007 at 02:18 AM Report Share #152823 Posted December 7, 2007 at 02:18 AM O free utiliza-se para libertar memória alocada pelo malloc (e afins); o delete utiliza-se para libertar memória alocada pelo new. Não misturem, não é opcional. eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado. O tipo string existe em C++ através da Standard Templates Library. Quem te disse que o tipo string não existe em C++ não te enganou, de facto não existe um tipo string intrínseco à linguagem. Mas em STL está definido o tipo string. sim claro esta, apenas disse que com o malloc se deveria fazer free e com o new usar o delete (neste caso o delete []) cada macaco no seu galho, ou seja c para um lado e c++ para outro, apesar de em c++ se poder usar c, em c nao se pode usar c++ . boas programacoes. Link to comment Share on other sites More sharing options...
TheDark Posted December 7, 2007 at 03:02 PM Report Share #152885 Posted December 7, 2007 at 03:02 PM sim claro esta, apenas disse que com o malloc se deveria fazer free e com o new usar o delete (neste caso o delete []) Foi só para clarificar 🙂 Desaparecido. Link to comment Share on other sites More sharing options...
Kriptosgeek Posted December 28, 2007 at 02:54 PM Report Share #156817 Posted December 28, 2007 at 02:54 PM o que o Falk0n disse ta bom mas tambem tem as funções de allocação de memoria! calloc() malloc() free() Melhor browser game do Mundo!---> Travian Regista-te! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now