Die Anfänge in C++

  • hey leute,
    hab gerade angefangen c++ zu lernen und stoße schon auf die ersten probleme.

    kann mir bitte jemand eine gute c++ totalnoob (also für alle ohne c kenntnisse; kann aber javascript und php) einführung empfehlen.

  • ach, und kann mir pls einer sagen was daran nicht stimmt pls

    beim compilieren erhalte ich diese fehlermeldung:

    Code
    schritt1.cpp
    C:\Users\iMakroy\Documents\Visual Studio 2008\Projects\schritt1.cpp(13) : error C2446: '==': Keine Konvertierung von 'const char *' in 'int'
            Es gibt keinen Kontext, in dem diese Konvertierung m”glich ist
    C:\Users\iMakroy\Documents\Visual Studio 2008\Projects\schritt1.cpp(13) : error C2040: '==': 'int' unterscheidet sich von 'const char [3]' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
  • 1.ok. also char sind nur buchstaben. und was sind dann strings?
    2.hm, das "ja" hab ich hier noch falsch. im code habs ich dann gleich gefunden^^
    3.das ganze zeug is nur zum üben. macht also keinen tieferen sinn

  • nein aber den include von fstream brauchst du hier nciht
    ist nur unnötig.

    ein C-String wäre char *Ausgabetext
    Ein C++-String wäre string Ausgabetext
    um den C++-String zu verwenden musst du aber das hier noch machen: #include<string>

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • jo thx, das hat geholfen.
    ein gutes tutorial habe ich nun auch gefunden.
    aber eine frage habe ich noch, wie kann ich zB das cmd programm ipconfig im main() {...} einbinden? bzw mit parametern aufrufen?

  • jo der system befehl klappt an und fürs sich ganz gut. aber nun habe ich ein kleines problem, dass der befehl nicht ausgeführt wird.

    das ist da ganze programm. wenn man es dann kompiliert und ausführt, habe ich im test "n" und "60" (ohne "") eingegeben.
    seltsamerweiße kommt dann die Fehlermeldung "Der Befehl "r" ist entweder falsch geschrieben oder wurde nicht gefunden".

    das problem liegt irgendwie damit zusammen dass ich + zeit beim system mache. aber was genau läuft da falsch?

  • ich bin mir nicht sicher ob man strings und zahlen so einfach miteinander verketten kann...
    Versuchs mal mit einem neuen string den du mit sprintf() erstellst.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • hab jetzt mal alle möglichen funktionen ausprobiert die dort stehen. nichts hat geholfen. im endeffekt kommt immer wieder die fehlermeldung "Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht möglich"
    ich kapier nur nicht warum der eine konstante vom typ char haben will

    genauso wenig ist es mir gelungen aus dem int einfach einen string zu machen. das klappt alles irgendwie nicht

  • wie gesagt:
    ach dir einen C-String mittels sprintf()
    damit hast du die konvertierung
    und die zahl hängt an deinem string dran

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • ok, hier ist der neue angepasste code

    Code
    string befehl;
    befehl = sprintf("shutdown /r /t %d", zeit);
    system(befehl);


    und da meldet er den fehler

    Code
    xy.cpp
    xy.cpp(25) : error C2664: 'sprintf': Konvertierung des Parameters 2 von 'int' in 'const char *' nicht m”glich
            Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    xy.cpp(26) : error C2664: 'system': Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht m”glich
            Kein benutzerdefinierter Konvertierungsoperator verfgbar, der diese Konvertierung durchfhren kann, oder der Operator kann nicht aufgerufen werden


    hab ich da was mit der verwendung der funktion falsch verstanden?

    EDIT: der reinterpret_cast hab ich auch schon ausprobiert, ohne erfolg

  • http://de.wikibooks.org/wiki/C%2B%2B
    http://de.wikibooks.org/wiki/C (für C)
    http://www.online-tutorials.net/c-c++-c/c++-tu…als-t-1-58.html

    Als Buch kann ich C++-Primer empfehlen.

    Ich würde einen C++-String erstellen, und den dann verketten:

    Code
    string befehl("shutdown /r /t ");
    befehl += zeit;
    system(befehl.c_str());
  • jo, also ich hab die lösung in nem anderen forum gefunden.
    ich hab jetzt einen stringstream erstellt und konnte somit die zahl anhängen und anschließend habe ich ihn genauso wie du es geschrieben hast über system(Befehl.c_str()); ausgeführt.
    trotzdem ein dank an alle!

  • Der stringstream hat den Vorteil, dass alle Datentypen unterstützt werden, die eben diesen operator<< definiert haben. Dieser operator+= vom String unterstützt eben nur bestimmte Typen.

    Viele liebe Grüße
    The User