Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Numero merkiksi

Sivun loppuun

Axuu [15.05.2006 13:11:38]

#

Miten onnistuisi int tyyppisen numeron muuttamisen merkiksi.

eli

string merkkijono="moikka";
int luku=2;

merkkijono = merkkijono + char(luku);

tua ei kuitenka pelitä...miten tarvitsisi muuttaa

koo [15.05.2006 14:58:46]

#

string liita(string const &merkkijono, int luku)
{
        std::ostringstream os(merkkijono);
        os << luku;
        return os.str();
}

Axuu [17.05.2006 10:10:31]

#

valittaa

functiot.cpp: In function `std::string liita(const std::string&, int)':
functiot.cpp:386: error: variable `std::ostringstream os' has initializer but incomplete type

koo [17.05.2006 10:30:49]

#

#include <sstream>
#include <string>

ostringstream taisi olla uusi juttu, mutta etpä tainnut hirveästi tutkia manuaaleja tai oppaita, että mistä siinä on kyse. Niin voisi olla hyvä tehdä, ihan työturvallisuudenkin takia. :-)

Axuu [17.05.2006 11:24:54]

#

Muuten iha hyvin, mutta se korvaa merkkijononi ensimmäisen merkin kyseisellä numerolla (jos numero on yli 10 niin si se korvaa 2 merkkii jne.), pitäisi saada liitettyä merkkijonon perään se eikä saisi korvata toista merkkiä.

"NumeroTahanNainPeraan" muuntuu "71mroTahanNainPeraan", mikäli antamani luku on 71

Deewiant [17.05.2006 14:03:35]

#

Kannattaa antaa ostringstreamin konstruktorille parametri std::ios::app, jotta se aloittaa kirjoittamisen loppupäästä. Vaihtoehtoisesti voit siirtää kirjoituspistettä seekp-metodilla.

Eli joko:

std::ostringstream os(merkkijono, std::ios::app);

Tai:

std::ostringstream os(merkkijono);
os.seekp(0, std::ios_base::end); // nollas positio loppupäästä

Axuu [17.05.2006 15:13:08]

#

Kiitos ny toimii

koo [17.05.2006 16:15:02]

#

Hyvä, että toimii. Tässä vielä yksi tapa

std::ostringstream os;
os << merkkijono << luku;
// os.str();

niin eipä tartte murehtia tuota minultakin unohtunutta alustuksen std::ios_base::app-flägiä eikä erillistä seekkiä. :-)


Sivun alkuun

Vastaus

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

Tietoa sivustosta