c++ Compiler mit zeitgemäßer GUI?
-
Zuerstmal zwei Dinge:
1. Hi
2. Sorry für den evt. nicht soooo aussagefähigen Titel. Mir ist einfach nichts eingefallen um mein Problem genauer zu definierenAlso ich hätte da mal eine Frage (wen wunderts ;)):
Ich habe mich seit "einiger Zeit" mehr oder weniger weitreichend mit dem Thema Informatik auseinandergesetzt...
Das fing mit einem kleinen 2d-Spiel an, zu dem man über eine simple Scriptsprache einfache Erweiterungen erstellen konnte.
Ich wollte unbedingt programmeren lernen und habe mir erstmal ein Buch über C++ gekauft
Feststellung nach Lektüre der ersten Seiten:??? ???
Ich bin da echt nicht durchgestiegen und habs erstmal entnervt aufgegeben.
Irgendwann, so nach einen halben Jahr wollte ich dann aber immer noch programmieren lernen
Also neues Buch: Visual Basic.
Die Erklärungen waren eindeutig besser, ich konnte sogar die Hälfte verstehen
Dann kam ab der 11. klasse Informatikunterricht dazu...
Nebenher habe ich immer mal in irgendwelchen Tutorials rumgelesen und vor kurzem habe ich mir nochmal dieses C++ Buch angeguckt.
Siehe da, auf einmal macht das ja SinnIch würde mich jetzt gern näher mit C++ auseinandersetzen, aber dazu bräuchte ich erstmal einen Compiler
Also habe ich mal ein bisschen im I-Net gestöbert und auch was gefunden, aber irgendwie bietet das Teil keine "zeitgemäße" Möglichkeit ein GUI einzurichten...
Nur diese "alte Dos-Ausgabe".
Ich habe mich erstmal gewundert, was man damit denn anfangen kann und festgestellt: Es gibt Leute, die dann über ASCII-Zeichen eine Art "Ausgabeinterface" schreiben...
Irgendwie bin ich für sowas wohl zu jung, ich bin doch mehr ein Freund von Windows-typischen GUIs...Meine Frage:
Gibt es irgendeinen Freeware-Compiler da draußen, der soetwas unterstützt?
Wenn nicht: Welcher C++ Compiler unterstützt das überhaupt?
Ich habe eigentlich keine Lust des Ausprbierens wegen schon Geld auszugeben, aber wenn mir keine andere Wahl bleibt, dann hätte zumindest gern etwas vernünftiges...
Irgendwelche Hinweise, Ratschläge etc.?
-
Just_Snake schrieb:
Irgendwie bin ich für sowas wohl zu jung, ich bin doch mehr ein Freund von Windows-typischen GUIs...
musst erst sauber c++ lernen, bevor du mit c++ gui-sachen machen darfst. sonst versauste dir echt viel und verlierst jahre. also lass es.
-
devcpp ist deins... schau mal den link oben zu den compilern.
darüber hinaus hat das visual studio eine umsonst autorenversion.
aber: lerne erstmal c++ auf der konsole.. windowsprogrammierung kommt früh genug.
so long
-
Thx für die schnellen Antworten...
Also am besten sollte ich alles, was irgendwie mit Benutzeroberfläche zu tun hat erstmal vergessen?
-
Just_Snake schrieb:
Thx für die schnellen Antworten...
Also am besten sollte ich alles, was irgendwie mit Benutzeroberfläche zu tun hat erstmal vergessen?ja, leider.
die gui-sachen sind alle mit vererbung, polymorphismus und so sachen, die, wenn man sich sich falsch angewöhnt, bei c++ schlimm in die hose gehen.
-
Schade...
Aber besser erstmal verzichten, als von Anfang an Fehler zu machen. Das ist wohl einzusehen
Danke für den Hinweis.
-
Ich nochmal...
Es passt hier vom Forum her zwar nicht rein, aber bevor ich wegen meiner Anfängerfrage einen neuen Thread eröffne, nutze ich lieber den hier nochmal.Ich wollte jetzt einfach mal ein bisschen mit C++ rumspielen und habe mich dann entschlossen, ein Programm zu schreiben, das die Länge eines eingegebenen Strings bestimmt.
Mein Ansatz sah folgendermaßen aus:int main()
{
unsigned short zaehler = 0;
char string[100];
cout << "Bitte Text eingeben\n";
cin >> string;
while (1)
{
if (string[zaehler]!='/0')
zaehler++;
else break;
}
cout << zaehler;
return 0;
}Wo ist mein Fehler?
Wenn ich mir den Ablauf angucke, sieht das für mich so aus:
1. ich erstelle eine Zählvariable mit dem Wert 0
2. ich erstelle einen String mit max. 100 Zeichen
3. ich gebe die Meldung "Bitte Test eingeben" aus und springe in die nächste Zeile
4. ich weise string einen Text zu, den ich an dieser Stelle eingebe
5. ich überprüfe, ob sich an der von zaehler angegebenen Stelle das Schlusszeichen des Strings befindet
-wenn ja, gebe ich zaehler aus
-wenn nicht, erhöhe ich zaehler um 1 und überprüfe dann erneut auf das Schlusszeichen...Wenn ich string das Wort "hallo" zuweise, müsste das doch so aussehen:
Inhalt des Strings: h a l l o /0 .......
Index: 0 1 2 3 4 5 .......
Die Schleife sollte also bei zaehler=5 erkennen, dass sich dort das Schlusszeichen befindet und dann break durchführen.
Das funktioniert aber nicht...
Das Programm hängt sich stattdessen auf.
Woran liegt das, was habe ich falsch verstanden/gemacht?
-
Es heißt '\0'. Mit Backslash. Wie bei '\n' und allen anderen Escape-Sequenzen. Schalte mal die Warnungen bei deinem Compiler ein, dann meldet er sowas eigentlich.
BTW läßt sich die Schleife ein wenig eleganter schreiben:
while (string[zaehler] != '\0') ++zaehler;
-
Mhhh stimmt...
Wo man es so liest, macht es fast Sinn
Danke für die schnelle Hilfe...
-
Mist, jetzt kann ich den alten Beitrag nicht mehr editieren
Wenn sich in dem String ein Leerzeichen befindet, verlässt er die Schleife aber ebenfalls...
Sollte es nicht einen Unterschied zwischen "/0" und " " geben?
-
Nein, der String hört nicht bei einem Leerzeichen auf ... aber der Extraktionsoperator von cin tut das. D.h. wenn du Hallo Welt<ENTER> eingibst, enthält der String nur "Hallo", während der Rest im Eingabepuffer von cin verbleibt und bei der nächsten Eingabeoperation eingelesen wird.
Ganze Zeilen kann man mit getline einlesen.
-
Für schnelle GUI Erfolge ist wohl der Borland C++ Builder 6 unschlagbar.
Nur für einen Schüler wohl etwas zu teuer.
Mal abgesehen davon, das dich dragdrop builden nicht näher an C++ führt ....
-
Bashar schrieb:
Es heißt '\0'. Mit Backslash. Wie bei '\n' und allen anderen Escape-Sequenzen. Schalte mal die Warnungen bei deinem Compiler ein, dann meldet er sowas eigentlich.
BTW läßt sich die Schleife ein wenig eleganter schreiben:
while (string[zaehler] != '\0') ++zaehler;
while (string[zaehler++] != '\0');
wobei ich mir nicht ganz sicher bin, ob die ++ vor oder nach dem "zaehler" hinmüssen.
-
-
Ja, oder
while (string[zaehler++]);
aber wenn man nicht gerade mit seinen l33t sk1llz angeben will, läßt man das besser sein