Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Ende des Programms

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 ] > 2 < [ 3 ] [ 4 ] [ 5 ]
010
14.09.2006, 09:19 Uhr
Pler
Einer von Vielen
(Operator)


EXIT_SUCCESS sollte auch nur 0 sein.
Das mit dem return in der main haben wir ja aber schon oft genug durchgequatscht.

@J-jayz-Z:
C ist ja eine Untermenge von C++. Viele Leute sagen ja, dass wenn man C schreibt auch sagen kann, dass man C++ schreibt. Umgedreht übrigens genauso. Denn viele meinen ja, dass es Std-C eh nicht mehr gibt und deswegen ja jeder weiß, dass man eigentlich C++ meint.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
14.09.2006, 09:20 Uhr
Pler
Einer von Vielen
(Operator)


Wegen des Fensters: Eigntlich sollte man das bei der Entwicklungsumgebung einstellen können. Wenn man das Programm aus der Konsole raus startet soll es ja auch nicht erst noch mal stehen bleiben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
14.09.2006, 09:56 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Trotzdem hat er C geschrieben und nicht C++,egal was manche Leute denken
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
14.09.2006, 14:18 Uhr
0xdeadbeef
Gott
(Operator)


Im Übrigen leert cin.clear nicht etwa den Eingabepuffer, sondern setzt lediglich die Statusflags des Stream-Objektes zurück (Interessant im Fall von Einlesefehlern). Wenn auf diese Weise von der Konsole eingelesen werden soll, empfiehlt es sich, zeilenweise einzulesen und den eingelesenen Puffer zu konvertieren, d.h. mit std::getline und std::stringstream zu arbeiten. Ich hab dazu mal ne Template in der Source-Corner geschrieben. (Siehe quicklinks oben)

Oh, und C ist nicht 100% mit C++ kompatibel, es gibt in ein paar esoterischen Fällen Abweichungen. Und, was noch wichtiger ist, schöner C++-Code hat mit schönem C-Code nichts mehr zu tun.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 14.09.2006 um 14:19 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
14.09.2006, 14:27 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Ok, ich wollte eigentlich getline das machen lassen, nur hab ich esmit std::cin.getline verwechselt und das brauch afaik ein array und die größe, das wollte ich nicht machen

Das mit cin.clear ist interessant, also sind die Daten noch im Puffer, nur denken alle methoden, die vom Eingabepuffer lesen, es stünde nichts drin,weil die Flags, die gesetzt werden,wenn etwas reingeschrieben wird nicht mehr gesetzt sind. Richtig soweit ?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
14.09.2006, 14:29 Uhr
0xdeadbeef
Gott
(Operator)


Nein, der Stream denkt danach einfach nur, es wäre wieder alles in Ordnung. Zum Beispiel:

C++:
int x;
std::string s;

std::cin >> x;
if(!std::cin) { // Ups, wohl kein int eingegeben
  std::cin.clear(); // Fehlerflag wegnehmen, damit
  std::getline(std::cin, s); // das hier funktioniert.
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
14.09.2006, 14:50 Uhr
(un)wissender
Niveauwart


Mal einige Anmerkungen

getchar(); löst das Problem in der Regel nur dann wenn der Puffer leer ist, also beefys Lösung nehme, oder nicht portable Sachen wie system("pause").

EXIT_SUCCESS ist C

C ist keine Untermenge/Teilmenge von C++


C++:
int main(const int argc, const char* argv[]);



Gibt es nicht bzw. ist eigentlich keine legale main.
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 14.09.2006 um 14:50 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
14.09.2006, 15:31 Uhr
0xdeadbeef
Gott
(Operator)


Doch, das ist ne legale main. Der Standard erlaubt ausdrücklich

C++:
int main(int argc, char *argv[]);


und kompatible Deklarationen.

Allerdings ist es etwas unüblich, das so zu schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
14.09.2006, 15:38 Uhr
(un)wissender
Niveauwart


Ah, dass mit den "kompatible Deklarationen" wußte ich nicht.
Danke. In meinem C++-Buch steht es anders, aber der Schildt scheint eh nicht der Beste zu sein.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
14.09.2006, 16:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von (un)wissender:
Ah, dass mit den "kompatible Deklarationen" wußte ich nicht.
Danke. In meinem C++-Buch steht es anders, aber der Schildt scheint eh nicht der Beste zu sein.

er ist evtl ein Schild(t)bürger
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ]     [ 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: