Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [C++] reinterpret_cast

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    21

    [C++] reinterpret_cast

    Salve a tutti, conosco le avvertenze legate a questo operatore, ma ho la necessità di convertire degli oggetti di tipo string in unsigned char* per utilizzarli in una funzione hash, e mi chiedevo se l'utilizzo del reinterpret_cast per questo mio fine potrebbe portare a qualche tipo di effetto collaterale che non ho preso in considerazione...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi ottenere il vettore a partire dal metodo c_str della string
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    21
    In principio l'idea era quella, ma dovendo gestire una grande quantità di dati volevo limitare il più possibile il numero di operazioni, anche se costanti, almeno la mia idea era: convertire la stringa usando il metodo c_str e poi copiare il tutto in un unsigned char*, poi però ho pensato che una cosa del tipo:
    codice:
     const unsigned char* str = reinterpret_cast <const unsigned char*> (s.c_str ());
    risolveva il tutto più velocemente... magari sbagliando...

  4. #4
    c_str() di fatto non fa altro che restituire un puntatore al buffer interno, per cui è un'operazione sostanzialmente istantanea.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    21
    Ma non dovrei poi comunque fare la copia in un altro vettore del tipo che mi interessa?

  6. #6
    Se la funzione di hash può lavorare con un const char *, perché mai? L'importante è che l'oggetto di tipo string non venga distrutto prima che la funzione di hash abbia terminato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    21
    La funzione lavora con un unsigned char*

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da AyFrank
    La funzione lavora con un unsigned char*
    E questo si era capito ...

    Ma la raccomandazione era un'altra ... "L'importante è che ..."
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    21
    No, non sto capendo, voi state dicendo di convertire l'oggetto string in un char* e di lavorare con quello (?). Ma i caratteri estratti dal vettore saranno trattati come char e non come unsigned char, e quindi avranno un range diverso, o sbaglio?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No, non hai capito.

    Ti stiamo dicendo che puoi usare il puntatore usigned così come hai scritto senza bisogno di copiare i dati a patto che l'oggetto string non venga distrutto mentre ne usi il contenuto.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.