Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19
  1. #1
    Trojaner Avatar von Avior
    Registriert seit
    17.03.2010
    Beiträge
    59

    Standard [C++] cin in cout?

    hallo,

    ich bin gerade dabei c++ zu lernen...
    nachdem ich nun ein buch zu dem thema gelesen habe, wollte ich mal eine art weckerprogramm schreiben.

    #include<iostream>
    #include<windows.h>
    #include<string>
    usingnamespace std;
    int main()
    {
    cout <<
    "Willkommen in diesem Weckerprogramm!!" << endl;
    cout <<
    "Bitte geben die sie Zeit ein, in der sie errinnert werden wollen!" << endl;

    int minuten;


    cout << cin >> minuten; <<
    " Minuten" << endl; //PROBLEM

    minuten=minuten*60000;
    Sleep(minuten);
    cout <<
    "ERRINNERUNG!!!" << endl;


    }
    ---------------------------------------------
    in der zeile mit problem hagelt es fehler!
    und zwar 30x dieser :

    Fehler 3 error C2784: "std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)": template-Argument für "std::basic_istream<_Elem,_Traits> &" konnte nicht von "std::basic_ostream<_Elem,_Traits>" hergeleitet werden. c:\programmierenlernen\wecker\wecker\main.cpp

    leider sagt mir der fehler nichts -.-
    deshalb bitte ich euch um hilfe


  2. #2
    Fortgeschrittener
    Registriert seit
    18.11.2008
    Beiträge
    32

    Standard

    cout << cin >> minuten; << " Minuten" << endl; //PROBLEM
    cin >> minuten;

    so sollte es klappen

    ach ja: Das "using namespace std;" ist bei dir falsch (du hast es ohne leerzeile)
    Geändert von Alexx (01.04.2010 um 15:22 Uhr)

  3. #3
    Trojaner Avatar von Avior
    Registriert seit
    17.03.2010
    Beiträge
    59

    Standard

    cout << cin >> "Minuten" >> minuten;

    so klappt es auch nicht...

    vll is nicht klar wie das aussehen soll:

    __ Minuten
    => __ ist der cin , Minuten = "Minuten"

    using namespace ist n copy fehler...im source ist es richtig^^
    Geändert von Avior (01.04.2010 um 15:28 Uhr) Grund: aw auf edit

  4. #4
    Anfänger Avatar von Lynx_
    Registriert seit
    09.05.2009
    Beiträge
    22

    Standard

    Guten Tag also ich schreib dir mal den source auf wie so das er funktioniert :

    #include<iostream>
    #include<windows.h>
    #include<string>
    usingn amespace std;
    int main(){

    int minuten;

    cout <<
    "Willkommen in diesem Weckerprogramm!!" << endl;
    cout <<
    "Bitte geben die sie Zeit ein, in der sie errinnert werden wollen!" << endl;

    cin >> minuten;
    cout << "Sie werden in der oben angegebenen Zeit erinnert" << endl;

    minuten=minuten*60000;
    Sleep(minuten);
    cout <<
    "ERRINNERUNG!!!" << endl;

    return 0;
    }


    Habs nich getestet müsste aber so funktionieren

    mfg Lynx
    printf("Sorry no signature here :X");

  5. #5
    Trojaner Avatar von Avior
    Registriert seit
    17.03.2010
    Beiträge
    59

    Standard

    Zitat Zitat von Lynx_ Beitrag anzeigen

    cin >> minuten;
    cout << "Sie werden in der oben angegebenen Zeit erinnert" << endl;



    return 0;
    das is aba geschummelt
    auf die lösung bin ich auch gekommen, aber es geht mir eig darum eben DIREKT beim eingeben "Minuten" danebenstehen zu haben^^

  6. #6
    Richard Stallman Avatar von Sawyer
    Registriert seit
    26.07.2008
    Beiträge
    2.037

    Standard

    Wie ihr Code schreibt und einrückt ist wirklich mehr als schrecklich. So sollte das ganze funktionieren. Des weiteren benötigst du die String Bibliothek nicht, da du keine Funktion daraus verwendest.

    Code:
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main(void)
    {
        cout << "Willkommen in diesem Weckerprogramm!!" << endl;
        cout << "Bitte geben die sie Zeit ein, in der sie errinnert werden wollen!" << endl;
    
        int minuten;
        cout << "Minuten:";
        cin >> minuten;
        cout << "Sie werden in der oben angegebenen Zeit erinnert" << endl;
    
        minuten *= 60000;
    
        Sleep(minuten);
        cout << "ERRINNERUNG!!!" << endl;
    
        return 0;
    }
    MfG, Sawyer
    Geändert von Sawyer (01.04.2010 um 15:58 Uhr)

  7. #7
    Trojaner Avatar von Avior
    Registriert seit
    17.03.2010
    Beiträge
    59

    Standard

    dankeschön!
    aber gibt es denn gar keine möglichkeit das "Minuten" hinter den cin zu setzen?
    @einrücken: sry formatierung wurde beim c&p zerstört^^
    @string: die ist absichtlich drin da ich noch einen "errinnerungsgrund" schreiben wollte

  8. #8
    W32.FunLove Avatar von S1024
    Registriert seit
    19.01.2010
    Beiträge
    126

    Standard

    Also wenn du willst das die Minuten direkt im Satz stehen und nicht mehr drüber etc. dann benutzt doch system("cls"). Dann bist du zwar eingeschrängt auf Windows kannst dir den Befehl aber gut merken weil durch system(" Befehl ") man jeden CMD Befehl einfügen kann.

    CODE:

    #include <iostream>
    #include <windows.h>
    using namespace std;

    int main(void)
    {
    cout << "Willkommen in diesem Weckerprogramm!!" << endl;
    cout << "Bitte geben die sie Zeit ein, in der sie errinnert werden wollen!" << endl;

    int minuten;
    cin >> minuten;
    system("CLS");
    cout << endl << endl;
    cout << "Sie werden in "<< minuten <<" Minuten erinnert" << endl;
    minuten = minuten * 60000;
    Sleep(minuten);
    cout << "ERRINNERUNG!!!" << endl;

    return 0;
    }
    Deine Mutter ist wie Open Source - Jeder kann sie haben.



    http://free-hack.com/video-tutorials...tml#post524336

  9. #9
    Master of Porn Avatar von sp1nny
    Registriert seit
    28.05.2007
    Beiträge
    533

    Standard My 2 cents

    My 2 cents:

    Code:
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main(void){
    
        cout << "Willkommen in diesem Weckerprogramm!" << endl;
        cout << "Bitte geben sie die Zeit ein, in der sie errinnert werden wollen!" << endl;
        cout << "Minuten: ";
    
        int iMinutes;
        if(!(cin >> iMinutes))
            exit(1);
    
        cout << "\n\nSie werden in "<< iMinutes <<" Minuten erinnert." << endl;
    
        Sleep(iMinutes*60000);
        cout << "ERINNERUNG!!!" << endl;
    
        cin.ignore();
        cin.get();
        return 0;
    }
    XMPP: sp1nny @ exploit.im
    MAIL: sp1nny @ tuta.io

    PGP:

    Wir müssen wissen — wir werden wissen.


  10. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    DoS (01.04.2010)

  11. #10
    Das Leben ist der Lehrer Avatar von DoS
    Registriert seit
    18.08.2008
    Beiträge
    528

    Standard

    Das was Sp1nny geschrieben hat ist korrekt und solltest du nehmen.


    Für Freaks
    : Rein theoretisch geht das cin "zusammen" mit cout.


    Code:
    cout << static_cast<char>(!(cin >> minuten)) << "\n" <<minuten <<" Minuten" << endl;
    Funktionieren tut es schon, aber ob es Sinn macht ist die andere Frage
    . In der Praxis niemals so etwas nutzen .



    Edit:
    Zur Erklärung: Ich werde hier einmal kurz Schritt für Schritt erklären, wie das funktioniert:

    Die Klammern bei (cin>>minuten) besagen, dass cin auf die Variable "minuten" angewendet wird. Ohne diese Klammern würde minuten gar nicht direkt von der cin Funktion genutzt. Da Klammern aber bindungsstärker sind, wird dieses also "zusammen" ausgeführt ( mit bindungsstärker meine ich so etwas, wie dass z.B. Punkt vor Strich Rechnung kommt.)

    Das cin gibt hier einen void Zeiger zurück, der erstmal keine Bedeutung hat. Ist er allerdings 0 hat etwas nicht funktioniert.

    Jetzt sind wir soweit, dass cin in cout ausgeführt wurde, allerdings ist da noch diese hässliche zurückgegebene Adresse . So, da der Wert normalerweise immer ungleich 0 ist kann man mit der Verneinung ( "!" ) den Wert auf 0 setzen, denn nach Herr Boole ist alles was ungleich 0 (also z.B. 0,7;2;6) ist true. Mit der Umkehrung ist das also false und entspricht einer 0. Damit wir die "hässliche 0" nicht sehen , casten wir die 0 in einen Char , in dem die 0 keine für uns lesbare Ausgabe ist.

    Kurzfassung:
    Die Klammern sorgen dafür, dass cin>>minuten ausgeührt wird und der Rest
    static_cast<char>(! ... sorgt dafür, dass man die Rückgabe nicht sieht.

    Fazit: Sinnlos aber rein theoretisch möglich . Falls ihr das interessant fandet könnt ihr ja auf den THX-Butten drücken




    Mit freundlichen Grüßen

    DoS
    Geändert von DoS (01.04.2010 um 19:53 Uhr)
    Legende: "Gruß" = kaum Zeit, "MfG." = durchschnittlich viel Zeit und "Mit freundlichen Grüßen" = viel Zeit
    gehabt beim Posten.


    Folgende Personen genießen meine Hochschätzung: BlackBerry, EBFE, DizzY_D, OpCodez, l0dsb und H4x0r007.

  12. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Atropos (01.04.2010), sp1nny (01.04.2010)

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •