Aihe ei sano ehkä paljoakaan ongelmasta. Yritän siis saada merkkijonot yhdistymään tällä tavoin:
funktio("jotain " /* Tähän joku sopiva merkki (VB:ssä se olisi &) */ muuttuja /* Tähän myös */ " jotain muuta");
Mikä merkki se on?
PS. Olen vielä aloittelija C:ssä ja C++:sassa, enkä oikein löytänyt oppaistakaan (kai se jostain oppaasta löytyykin).
Merkkijonoja voi yhdistää +-operaattorilla. Esimerkkejä: http://www.cplusplus.com/reference/string/
Oho, ainakaan Visual Studio ei anna käyttää + -operaattoria.
Unohdin tosiaan mainita, että nyt kun tuli aika yksinkertanen projekti mieleen niin käytän VC++:saa.
EDIT: Harmi, kun se Visual Studio ei anna käyttää sitä funktiokutsun sisällä. Kyllä muuten hyväksyy.
Kyllä VC++:llakin pitäisi toimia.
Muista että + toimii vain std::string-olioiden kanssa, eli esim. seuraava ei toimi:
funktio("merkki" + "jono");
Kun taas esim. seuraavat toimivat:
funktio(std::string("merkki") + "jono"); std::string alku = "merkki", loppu = "jono"; funktio(alku + loppu);
Ai juu. Miten saisin tämän höskän toimimaan?
void oma_aliohjelma(tyyppi /* en tiedä että mikä olisi sopiva tyyppi tähän */ *parametri) { system("komento " + parametri); //tähän se kikkailu }
Tuollaiseen yksinkertaiseen juttuun C merkkijono ja sprintf() funktio toimivat ihan hyvin...
Itse tykkään myöskin käyttää ennemmin sprintf:ää tuossa välissä, mutta onnistunee seuraavallakin hirviöllä:
void foo(std::string bar) { system(std::string("komento " + bar).c_str()); }
Voi hitto. Mikään ei toimi. sprintf:ää kokeilin, mutta tulee kuitenkin jossain se typerä "Unhandled exception".
Pakko tehdä VB:llä ja .NET -alustalla.
En jaksa enää kokeilla mitään muuta.
C:llä ja C++:lla on kiva tehdä jotain kivempaa.
ErroR++ kirjoitti:
Pakko tehdä VB:llä ja .NET -alustalla.
Voithan toki käyttää C#:a. Se ei eroa VB.Netistä mitenkään muuten, paitsi syntaksi on vähemmän hämärä (imo)
#include <cstdlib> #include <string> int main() { std::string komento = "del"; std::string parametri = " kansio /Q"; std::string kutsu = komento + parametri; system(kutsu.c_str()); return 0; }
Näin itse toteutan asian aina.
Juups. Kiitos vinkeistä. .NET -alusta sopii tarkoitukseeni hieman paremmin, koska minun on luettava myös merkki ilman kaiutusta (System.Console.ReadKey(True), käy myös C#:ssa).
Aihe on jo aika vanha, joten et voi enää vastata siihen.