Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Convertire INT in CONST CHAR per TTF_RenderText_Solid

    Ciao a tutti, devo usare la seguente funzione
    TTF_RenderText_Solid
    appartendente alla libreria SDL_TTF.lib, per renderizzare un punteggio... il problema è che la funzione richiede una variabile const char* e quindi non posso mettere come parametro un intero.
    Come posso risolvere il problema?

    Basterebbe convertire un intero in un char ma... funzionerebbe? come fare? grazie mille a todos!

  2. #2
    Devi semplicemente scrivere il tuo intero in una stringa.

    Qualche possibilità:
    C:
    codice:
    char buffer[20];
    sprintf(buffer, "%d", punteggio);
    TTF_RenderText_Solid(font, buffer, colore);
    C++:
    codice:
    std::ostringstream os;
    os<<punteggio;
    TTF_RenderText_Solid(font, os.str().c_str(), colore);
    C++11:
    codice:
    TTF_RenderText_Solid(font, std::to_string(punteggio).c_str(), colore);
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Devi semplicemente scrivere il tuo intero in una stringa.

    C++:
    codice:
    std::ostringstream os;
    os<<punteggio;
    TTF_RenderText_Solid(font, os.str().c_str(), colore);
    grazie mille! funziona! ma vorrei un po capire la sintassi... in pratica dichiaro una variabile di tipo stringstram che conterrà il contenuto della variabile punteggio... e poi stampo la variabile os... perché devo scrivere tutto sto casino: "os.str().c_str()" ? che significato ha?

  4. #4
    Un ostringstream è un normale stream C++ (come fosse cout o fstream), semplicemente invece di scrivere su file o su console scrive dentro ad una stringa. Per questo viene normalmente usato per la formattazione di numeri in stringhe.

    Ora, quando hai finito di scrivere nello stream, per ottenere la stringa finita devi richiamare il suo metodo str(), che ti restituisce un oggetto std::string (ovvero una stringa C++) contenente la stringa da usare. Nel tuo caso poi devi usare il metodo c_str() della stringa in questione, dato che la tua funzione vuole una stringa C (un const char *) e non una stringa C++ (il che in effetti è ovvio, dato che SDL è una libreria C).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    mmm...grazie mille per i chiarimenti.

    Scusa se approfitto, come posso aumentare il valore dell' intero che è stato convertito in stringa?
    devo incrementare la variabile intera e ripetere tutto il rpocedimento? ci sto provando ma nada...come posso fare?

  6. #6
    Originariamente inviato da Serus
    devo incrementare la variabile intera e ripetere tutto il rpocedimento?
    Sì.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.