Salve, devo trasformare una class, in un una stringa concatenata. è possibile? esiste una funzione che lo fa in automatico. grazie
Visualizzazione stampabile
Salve, devo trasformare una class, in un una stringa concatenata. è possibile? esiste una funzione che lo fa in automatico. grazie
vuoi il nome di una classe, ho capito bene? in questo caso ti posto del codice da esempio, provalo e scegli cosa ti serve di più
Se invece nella tua domanda intendi trasformare l'istanza di una classe in una stringa significativa allora devi fare l'override del metodo toString() della classe Object
Ciao, grazie per avermi risposto.
Allora devo trasformare questa classe
in una stringa, da poter inserire un una variabile, che poi mi servirà per essere inviata.
poi dal main o da dove ti pare
entrambe le stampe saranno uguali, prova e vedi se è quello che cerchi.
ciao, mi da errore su questa linea
e non capisco il perchè, dovrebbe essere giusto.
ora mi spiego un po meglio cosa devo fare, ora che ho i file.
Devo trasformare questa struttura C
in una classe Java.codice:/*
*libreria per la definizione della struttura messaggio
*/
#ifndef MSG_H
#define MSG_H
#define MSG_LOGIN 'L' //LOGIN
#define MSG_REGLOG 'R' //Register and Login
#define MSG_OK 'O' //OK
#define MSG_ERROR 'E' //Error
#define MSG_SINGLE 'S' //Message to single user
#define MSG_BRDCAST 'B' //Message broadcasted
#define MSG_LIST 'I' //List
#define MSG_LOGOUT 'X' //Logout
typedef struct {
char type ; // message type
char * sender ; // message sender
char * receiver ; // message receiver
unsigned int msglen ; // message length
char * msg ; // message buffer
} msg_t;
#endif
Sto realizzando un applicazione android che deve comunicare con un programma client-server già esistente. ti posto il codice della funzione C per leggere e scrivere i messaggi. perchè ho alcuni dubbi che possa essere letta una stringa normale, sono un pò arrugginito di C.
Non capisco se il messaggio che legge o riceve lo vuole in char quindi va bene la String che sto cercando di realizzare, oppure trasforma tutto in un integer.codice:/*
* libreria per la realizzazione delle funzioni read_msg e write_msg
* necessarie per lo scambio di struct msg_t attraverso il socket
*/
#ifndef RW_H
#define RW_H
#include "msg.h"
int read_msg(msg_t *M,int csd){
/* legge il messaggio dal socket,
ogni campo ricevuto separatamente viene memorizzato nella struttura M*/
char num[4];
/*read message type*/
if(read( csd, &(M->type) , sizeof(char)) < 0) {
perror("ERROR: reading msg type: ");
return 1;
}
/*read sender*/
if(read( csd, M->sender , sizeof(char)*256) < 0) {
perror("ERROR: reading msg sender: ");
return 1;
}
/*read receiver*/
if(read( csd, M->receiver , sizeof(char)*256) < 0) {
perror("ERROR: reading msg receiver: ");
return 1;
}
/*read message len*/
if(read( csd, num , sizeof(char)*4) < 0) {
perror("ERROR: reading message len: ");
return 1;
}
/* converte int in char */
M->msglen=0;
M->msglen=num[0]&0xFF;
M->msglen=M->msglen<<8;
M->msglen= M->msglen | (num[1] & 0xFF);
M->msglen=M->msglen<<8;
M->msglen= M->msglen | (num[2] & 0xFF);
M->msglen=M->msglen<<8;
M->msglen= M->msglen | (num[3] & 0xFF);
/*read message*/
if(read( csd, M->msg , sizeof(char) * M->msglen) < 0) {
perror("ERROR: reading msg message: ");
return 1;
}
return 0;
}
int write_msg(msg_t *M, int sk){
/* invia un messaggio attraverso la socket,
ogni campo memorizzato in M viene inviato separatamente tramite le funzioni write */
char num[4];
/*write type of message*/
if(write( sk, &(M->type), sizeof(char)) < 0){
perror("ERROR: writing message: ");
return 1;
}
/*write sender*/
if(write( sk, M->sender, sizeof(char)*256) < 0){
perror("ERROR: writing message: ");
return 1;
}
/*write receiver */
if(write( sk, M->receiver, sizeof(char)*256) < 0){
perror("ERROR: writing message: ");
return 1;
}
/*write msglen*/
num[0]=(M->msglen>>24)&0xFF;
num[1]=(M->msglen>>16)&0xFF;
num[2]=(M->msglen>>8)&0xFF;
num[3]=M->msglen & 0xFF;
if(write( sk, num, sizeof(char)*4) < 0){
perror("ERROR: writing message: ");
return 1;
}
/*write message*/
if(write( sk , M->msg , sizeof(char)*M->msglen) < 0){
perror("ERROR: writing message: ");
return 1;
}
return 0;
}
#endif
Riuscite ad aiutarmi? grazie
Io l'ho chiamata Msg la classe, tu msg. Ti stai perdendo in un bicchiede d'acqua, forse dovresti vedere un po qualche manuale di programmazione baseQuote:
ciao, mi da errore su questa linea
Msg msg1 = new Msg();
e non capisco il perchè, dovrebbe essere giusto.
wut? perché la devi dichiarare come statica?
comunque per fare il contrario puoi costruire le istanze così
se esclipse ti dice così avrai fatto qualche casino.
Il delimitatore ti fa capire come separare le stringhe, esempio: se hai una sequenza di caratteri di una frase come separi le parole? in base agli spazi. Se hai tutto attaccato senza spazi come le separi? (tip: puoi pure usare lo spazio come delimitatore al posto del carattere _, basta che poi lo spazio non lo usi nelle sotto stringhe)
(potresti pure provare a rendere l'oggetto serializzabile e mandare quello al posto della stringa)
ma ti ripeto, secondo me ti mancano le basi perché queste cose sono terra terra.