Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » enthält std::cin noch Zeichen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.08.2003, 23:31 Uhr
~Marzel
Gast


Gibt es eine Methode xxx() der Klasse istream, die
ermittelt ob der Standardinput noch Zeichen
enthält? Wenn nicht sollte die Methode sofort
false zurückliefern ansonsten true..?


C++:
#include <iostream>

int main(){
    std::string eingabe;
    if (std::cin.xxx()){
        std::cin>>eingabe;
    }
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.08.2003, 16:34 Uhr
virtual
Sexiest Bit alive
(Operator)


Entweder mit

C++:
std::cin::eof();


oder mit

C++:
std::cin.rdbuf->in_avail()


Ersters prüft, ob das Dateiende von cin erreicht ist, letzteres, ob augenblicklich daten anliegen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.08.2003, 20:08 Uhr
Marzel



Ich möchte, dass das Programm erkennt wenn eine Eingabe vorliegt.
Mit std::cin.rdbuf()->in_avail() klappt dies anscheinend nicht...
siehe folg. Programm

C++:
#include <iostream>

int main(){
    while(true){
        if (std::cin.rdbuf()->in_avail()){
            std::cout<<"Eingabe erkannt."<<std::endl;
        }
    }
}



warum geht das nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.08.2003, 21:24 Uhr
virtual
Sexiest Bit alive
(Operator)


Das geht nicht so wie Du Dir das vorstellst, jedenfalls nicht mit ANSI C++. Was sich hinter cin verbirgt ist in der Regel ein gepufferter Eingabestream, der erst Dann die Daten an Dich weitergibt, wenn entweder das Ende aller Daten erreicht ist (eof()) oder wenn eine bestimmte Taste (ENTER) gedrückt wurde.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.08.2003, 11:04 Uhr
Marzel



Dann halt anders:

wie kann ich denn bei folgendem Programm


C++:

#include <iostream>
int main(){
    std::string eingabe;
    std::cin>>eingabe;
    std::cout<<eingabe<<std::endl;
}




bewirken, dass die komplette Eingabezeile ausgegeben wird und nicht nur bis zum ersten Leerzeichen.
Bei Eingabe von "Hallo Test" gibt das Programm nur "Hallo" aus.

Dieser Post wurde am 11.08.2003 um 11:06 Uhr von Marzel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.08.2003, 11:11 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
#include <iostream>
#include <string>
int main()
{
    std::string eingabe;
    std::getline(std::cin, eingabe);
    std::cout<<eingabe<<std::endl;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: