Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Muuttujan lisääminen viestipoksiin

Matti Kaijomaa [03.06.2004 23:50:05]

#

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

acorn [04.06.2004 00:22:22]

#

char *teksti;
int numero = 4;
sprintf(teksti, "Tekstiä %d", numero);
allegro_message(teksti);

Matti Kaijomaa [04.06.2004 00:30:15]

#

Voisko tosta saada jotain selvennystä?

thefox [04.06.2004 02:04:19]

#

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.

firebug [04.06.2004 10:35:31]

#

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ää.

Matti Kaijomaa [04.06.2004 11:26:23]

#

Kiitoksia. Olen jälleen askeleen edempänä kuin ennen ;)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta