Dúvida gerais em C++  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Vocês leem como array de char e depois passam para um array de int, aplicando o and em cada posição?
E, se for escrever no arquivo, passar novamente para um array de char?
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Schuenemann wrote:Vocês leem como array de char e depois passam para um array de int, aplicando o and em cada posição?
E, se for escrever no arquivo, passar novamente para um array de char?


Não precisa fazer isso.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Na verdade, na maior parte das vezes, tratamos diretamente com os bits. O valor numérico, quando você trabalha com arquivos e sockets, costuma a ser irrelevante. No máximo convertíamos para inteiro em logs.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Então, qual sugestão?

No meu caso, eu trabalho com os inteiros mesmo.
Tenho que abrir o arquivo e trocar um byte específico de 3 para 5, por exemplo. Ou vários contíguos.

Existe alguma contra-indicação nisso?


Pelo que testei, não dá o problema citado com o cast (ao menos nesse compilador).

Acho que não fica legal (mesmo que tenha desempenho melhor) eu manter uma string e aplicar o and em todo código que acesse o conteúdo da string.
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Como se converte um número para uma string hexadecimal (ou outra base qualquer) ?
Vi que a maneira padrão é usando sprintf(string_destino, formato, numero), mas como eu posso saber antecipadamente qual o tamanho que a string terá? Exemplo:


Imprime "FF", mas só funciona com o resize() (e nesse caso eu já sabia que teria tamanho 2 saída).
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

O sprintf é usado em C. Em C++ geralmente usa-se o stringstream (ou as funções de string da boost).

Veja:
http://www.cplusplus.com/reference/iostream/manipulators/hex/

Mas, basicamente:



O stringstream, por ser um stream, tem a mesma sintaxe do cout.

This message was edited 1 time. Last update was at 08/03/2011 19:35:18


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Valeu.



Vou considerar o uso da Boost. Parece simplificar muita coisa em relação à API padrão.


Edit: só depois notei que você já tinha dado o exemplo exato...

This message was edited 1 time. Last update was at 15/03/2011 17:49:38

Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Passei a ter um problema "estranho".
O erro é:
multiple definition of `State::State(std::basic_string<char, std::char_traits<char>, std::allocator<char> >'

Vou tentar colocar de forma simplificada as classes que tenho. E vou tirar os includes da lib padrão pra diminuir o código.

Classe Ata:

classe State:

classe Helper:


Segundo a busca que fiz, quando você declara uma variável num arquivo header, cada arquivo-fonte que incluir aquele header terá uma cópia separada da variável.
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Não sou expert em C++, mas vc tem certeza disso?
Afinal, para que serve então o seguinte código do preprocessador?



[]'s

This message was edited 1 time. Last update was at 09/03/2011 22:12:44


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Vc está implementando os construtores dentro do header? É normal fazer isso? O ideal não é implementar a classe em um arquivo .cpp?
Se você inserí-los dentro do bloco de compilação condicional, acredito que o erro vá desaparecer, pois eles serão implementados apenas uma vez.

[]'s

Ops... Agora que vi o comentário no código.

Pq vc ta dando um include no State.cpp?

This message was edited 2 times. Last update was at 09/03/2011 22:16:38


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Acho que o erro é aquele include mesmo. Eu acabei incluindo aquilo porque dava erro no construtor de Ata, mas agora estou percebendo que só acontece o erro quando faço build no outro projeto.
Amanhã eu vou verificar as dependências entre os projetos, acho que o erro é meu mesmo.

Obrigado.
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Eu confirmo que era aquilo mesmo. Na minha ignorância em resolver o problema, acabei dando include num .cpp.

Pra resolver no Code::Blocks, uma forma é clicar no segundo projeto, ir em Add files e adicionar os .h e .cpp.
Adicionar em project dependencies não resolve. Parece que ali só vale para a compilação, não pro linking.


Tava acostumado com Eclipse/Netbeans.
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline

Vou rever o que escrevi.

This message was edited 1 time. Last update was at 27/03/2011 13:06:52

 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team