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.