Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [C++] Merkkijonojen yhdistys

Sivun loppuun

ErroR++ [31.12.2011 15:16:04]

#

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

-tossu- [31.12.2011 15:26:43]

#

Merkkijonoja voi yhdistää +-operaattorilla. Esimerkkejä: http://www.cplusplus.com/reference/string/string/operator=/ http://www.cplusplus.com/reference/string/string/operator =/

Macro [31.12.2011 15:54:21]

#

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=cpp_ohj_01

ErroR++ [01.01.2012 11:07:07]

#

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.

Sisuaski [01.01.2012 12:00:36]

#

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);

ErroR++ [01.01.2012 12:28:53]

#

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
}

jalski [01.01.2012 12:38:02]

#

Tuollaiseen yksinkertaiseen juttuun C merkkijono ja sprintf() funktio toimivat ihan hyvin...

nomic [01.01.2012 12:54:20]

#

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());
}

ErroR++ [01.01.2012 13:11:55]

#

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.

Grez [01.01.2012 14:11:00]

#

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)

vesikuusi [01.01.2012 14:26:43]

#

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

ErroR++ [01.01.2012 14:35:28]

#

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


Sivun alkuun

Vastaus

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

Tietoa sivustosta