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
string liita(string const &merkkijono, int luku) { std::ostringstream os(merkkijono); os << luku; return os.str(); }
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
#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. :-)
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
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ä
Kiitos ny toimii
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ä seek
kiä. :-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.