Yritän epätoivosesti tunkea muuttujan allgero_message-funktioon.
Jos PHP:ssä haluun tunkee tulostettavaan tekstiin muuttujan, teen sen näin:
echo "tekstiä" . $muuttuja;
käyttämällä cout-operaattoria C++:ssa, teen näin:
cout << "tekstiä" << muuttuja;
Entäs, jos haluan lisätä muuttujan allegro_message - funktioon? Ei toiminu PHP:n tyyli eikä tuo coutin tyyli...
allegro_message("Tekstiä" (joku übermerkkiviritelmä) muuttuja);
EDIT: ensimmäinen lause oli vähä semmone, muutin tekstiä helppolukuisemmaksi
char *teksti;
int numero = 4;
sprintf(teksti, "Tekstiä %d", numero);
allegro_message(teksti);
Voisko tosta saada jotain selvennystä?
acornin esimerkki ei toimi, koska teksti on vain pointteri eikä merkkijonolle täten varata missään tilaa. Tämä voisi olla toimivampi:
char teksti[16]; /* muuta kokoa (tässä 16) tarpeen mukaan */ int numero = 4; sprintf(teksti, "Tekstiä %d", numero); allegro_message(teksti);
Tuossa siis tuo "Tekstiä %d" on ns. formaattimerkkijono, jossa %d tarkoittaa tavallista kokonaislukua. Lue lisää jostain standardikirjaston manuaalista. C++:ssa vois käyttää myös string streameja tms härveleitä jolloin saisit sen homman suoraan noilla << operaattoreilla mutta minulla ei niistä ole paljoakaan kokemusta.
Näin hoituu sama juttu stringstreameilla:
#include <sstream> int main() { stringstream ss; int luku = 3; ss << "Tekstiä " << luku; allegro_message(ss.str()); }
Voit siis tunkea tuohon stringstreamiin ihan mitä tahansa, kokonaislukuja, tekstiä, liukuluja etc. Stringiksi tuon bufferin saa muutettua funktiolla str(). Jos kaipaat vielä C-tyylistä merkkijonoa, saa sen helposti näin:
ss.str().c_str();
Eli muutetaan ensin stringstream stringiksi ja siitä eteenpäin vielä const *char-tyyppiseksi.
Tässä oli nyt tällainen pieni esittely. Googlesta löytyy lisää.
Kiitoksia. Olen jälleen askeleen edempänä kuin ennen ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.