Beiträge von The User

    Hallo!
    filelength ist kein Standard-C++!
    Wenn du keinen Platz verschenken möchtest, lies zeilenweise und schreib es in einen string.
    Ansonsten kannst du auch char* mit sehr großer Länge anlegen und dann füllen.
    Oder du zählst erst einmal in einer Schleife und nimmst dann fgets.

    Viele liebe Grüße
    The User

    PS:
    Hier stehts:
    http://www.cplusplus.com/doc/tutorial/files.html

    PPS:
    Schau dir mal an, was ich da gefunden habe: :roll:
    http://www.cplusplus.com/reference/string/string/reserve/
    Dateizeiger ans Ende setzen, Zähler zurückgeben lassen, in Schleife einlesen oder eben mit read...

    Also wenn das Daten sind, die dein Programm während des gesamten Ablaufs verwendet, würde ich die Datei mit ifstream einlesen, in einen vector speichern, diesen vector bearbeiten und am Ende alle Elemente des vectors wieder speichern.
    Wenn du nur eben mal bearbeiten möchtest, kannst du auch den komplizierten Weg gehen, gleichzeitig zu lesen und zu schreiben mit fstrem.

    Viele liebe Grüße
    The User

    PS:
    Schau mal hier. ;)

    Hi!
    Man kann etwas probieren:
    Es gibt zwei Möglichkeiten in C++, den <<-Operator zu überladen, einmal als Elementfunktion und einmal als globale Funktion. Der zweite Weg ist üblicher, also kann man es einmal probieren:

    Code
    #include <iostream>
    using namespace std;
    
    
    int main()
    {
      operator<<(cout, cin);
    }


    Das kompiliert nicht, die Funktion existiert nicht. Folglich muss es eine Elementfunktion sein:

    Code
    #include <iostream>
    using namespace std;
    
    
    int main()
    {
      cout.operator<<(cin);
    }


    >> Geht und führt zur selben Ausgabe.
    Sieht doch aus wie eine Pointer-Adresse, das wollen wir einmal testen:

    Code
    #include <iostream>
    using namespace std;
    
    
    int main()
    {
      cout << &cin << endl << cin;
    }


    Ausgabe:

    Zitat


    0x804a040
    0x804a048


    Es ist nicht die Adresse von cin, aber die Ähnlichkeit fällt doch auf.
    Mit cout sieht die Ausgabe recht ähnlich aus, vermutlich klappt es wohl auf jedem ios oder ios_base geht.
    Dazu finden wir hier jedoch keine Funktion operator<< mit ios oder ios_base als Operanden.
    Folglich muss eine Konvertierung stattgefunden haben, in ios finden wir operator void*.

    Code
    #include <iostream>
    using namespace std;
    
    
    int main()
    {
      cout << (void*)cin << endl;
      cout << cin;
    }


    Die beiden Ausgaben sind identisch!
    Das Ergebnis hat laut Doku keine besondere Bedeutung, außer es ist 0, dann ist der interne Status einer, der einen Fehler anzeigt. Warum ein operator void* und kein operator bool verwendet wurde, ist mir schleierhaft.

    Viele liebe Grüße
    The User

    PS:
    driver
    In der Praxis ist das keine entscheidende Frage, ich glaube es war nur Interesse und kein wirkliches Problem. ;)
    PPS:
    Die Rückgabe der Funktion ios::operator void* ist vom Compiler abhängig:
    Visual C++:

    Code
    operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; }


    Hierbei wird die Konvertierung im C-Stil geschrieben, was zu Unklarheiten führt.
    Anders sieht es beim GNU Compiler in basic_ios (das ist ein Implementierungs-Detail) aus (abgesehen von der besseren Kommentierung, Einrückung und Lesbarkeit!):

    Code
    operator void*() const
          { return this->fail() ? 0 : const_cast<basic_ios*>(this); }


    Explizit wird klar gemacht, dass ein const_cast stattfindet, denn der Typ von this in einer Funktion mit const nach den Klammern ist const basic_ios*. Anschließend findet implizit die Konvertierung in void* statt, die selbstverständlich sein sollte.
    Wenn mehrfache Vererbung ins Spiel kommt, ist die Adresse nicht mehr unbedingt diejenige, die man durch (void*)cin erhält. Dadurch weichen die Zahlen leicht ab.
    Es sollte klar sein, dass du den Rückgabewert dieser Funktion nicht verwenden solltest außer als boolean!

    Hmm, das würde ich ja kaum aushalten, und das soll jemanden psychisch stärken...
    Naja, ich weiß nicht viel über solche Einrichtungen, auch wenn bei mir in Düsseldorf in der Nähe eine ist, Gott sei dank musste ich sie nicht aufsuchen.
    Du hattest schon häufiger gesagt, dass du kaum beschäftigt bist, aber wenn du das nun nochmal so ausdrückst, versteht man schon eher, was dort mit dir los ist.

    Das mit dem Spiele-Abend hat doch auch schonmal geklappt, bist du dir denn so sicher, dass sie dir nicht helfen?

    Ist doch ziemlicher Quatsch, ob man nun 1 oder 4 Threads haben soll. Es geht doch immer um dich und die Einrichtung und allem was dazu gehört, Betreuer, Eltern etc. Ein zusätzlicher Thread macht auch nichts besser. Bloß wenn du was ganz neues schreiben möchtest, was nichts direkt mit unseren Fragen zu tun hat, wäre ein Thread vielleicht angemessen. (z.B. mit deiner Vergangenheit)

    Egal:
    Was machst du denn den lieben langen Tag?
    Du darfst zweimal die Woche ins Internet, bist selten bei den Eltern, lernst hier und da ein paar Sprachen. Und den Rest der Zeit kannst du dich langweilen und verblöden mit Essen, Hauptschulabschluss-Vorbereitung, schlafen und dumm rumsitzen?

    Meine aktuelle Signatur hat 6 Zeilen. Selbst wenn ich nichts ändere, sagt das Forum, es wären zu viele.
    Kann es sein, dass das ein VB-Fehler ist? Der vielleicht für die Berechnung automatisch nach 20 Zeilen einen Umbruch zählt, obwohl die meisten Zeichen nur Tags sind?

    Dass du wirklich an keinen Kursen/Unterricht teilnehmen kannst ist ja wirklich furchtbar. Du musst dich ja auch irgendwie bilden. Lassen die Betreuer/Therapeuten (ich kenn jetzt nicht die Infrastruktur der Einrichtung) solche Dinge garnicht zu? Glaubst du denn, dass du psychisch dazu in der Lage wärst? Ich meine, du bist doch auch sonst schonmal "draußen". Du musst einfach irgendetwas machen, und wenn du dich nur im Internet bildest, selbst dort gibt es ja Möglichkeiten genug.

    Viele liebe Grüße
    The User

    Jabber, IRC, ICQ, MSN. Kein TS oder so, möchte einen freien Client haben.
    Dann unterhalte ich mich eben mit Bekannten oder Leuten aus dem Forum über Programmierung und anderes. Gerade Support auf #freenode ist schon praktisch. Außerdem immer mal wieder was länger über politisch/philosophischen Kram.
    Weil dann auch doch schonmal was an Quellcode herumkommt, logge ich in der Regel.

    Viele liebe Grüße
    The User

    Hallo!
    Ich wollte meine Signatur ändern (etwas kürzen und abändern) bloß sagt er immer "maximal 7 Zeilen" auch wenn es 7 Zeilen sind, bei 5 Zeilen geht es auch nicht. Die alte Signatur ging aber.

    Viele liebe Grüße
    The User

    Hi!
    Warum soll man nicht so einen Blog machen?
    Vielleicht scheibst du ja noch das ein oder andere zu Gott und der Welt. Zugegeben ist im Moment der Inhalt sehr "kopiert" und unpersönlich. Aber es gibt ja auch erst wenige Texte.
    Zum Design:
    Ich komme zwar aus einer komplett anderen Ecke (Freie Software, rpm, openSuSE, KDE) und kann mich vielleicht nicht in einen Ubuntu-User hineinversetzen, aber ich finde doch das Design recht langweilig. Ein paar orangene Linien, das wars. Vielleicht wenigstens einmal einen hübschen Header hineinbringen, der das ganze etwas persönlicher macht als den Gnome-Standard-Hintergrund.
    Der Quellcode (Da war ein Validator-Link, also habe ich draufgeklickt^^):
    Im wesentlichen wäre das auch valides XHTML strict, aber da sind einfach ein paar doofe Fehler:
    -div direkt in <ul>
    -<php statt <?php (dann würde es auch ausgeführt werden)

    Viele liebe Grüße
    The User

    Oh, dann tust du mir sehr Leid!
    Sorry, aber wenn ich "System::" sehe, reagiere ich immer leicht allergisch. ;)
    Das ist ja ungefähr so, wie wenn an den Schulen Delphi verwendet wird.
    Ich verwende z.B. überhaupt kein Windows, also wäre etwas blöd. Java ist zwar Müll gegenüber C++, aber da muss ich wenigstens nicht für die Schule Windows verwenden.
    Naja egal:
    Der System::String muss auch eine Funktion zur Konvertierung in char* haben. Schau dich ein wenig in der Doku um.
    Boost ist eine sehr große Bibliothek für C++ mit vielen schönen Features:
    -Netzwerk-Programmierung
    -Serialisierung (Speichern von Objekten in Dateien)
    -Reguläre Ausdrücke
    -Zusätzliche Container (also Array-Klassen)
    -Threads
    -...
    Sehr viele dieser Features werden in kürzerer Zeit in den Standard eingehen.
    Ansonsten kann ich übrigens auch Qt empfehlen, damit kann man geile Oberflächen machen.
    Boost und Qt haben zwei entscheidende Vorteile: Die Bibliotheken sind plattformunabhängig (was Compiler und Betriebssystem angeht) und sind Frei (OpenSource).

    Also falls du mal was in der Freizeit programmieren willst... ;)
    http://www.boost.org/doc/libs/1_38_0
    http://www.qtsoftware.org/
    Wir haben im Forum auch eine hübsche Liste mit Bibliotheken angefertigt.

    Viele liebe Grüße
    The User

    Hallo!
    Ein Paar Ideen:
    -Idee 1: Standard-C++ verwenden
    -Idee 2: Das ist ziemlich unsicher, irgendwelche Kommandos auszuführen, die du per TCP erhälst
    -Idee 3: In Standard-C++ gibt es die Funktion std::string::c_str
    -Idee 4: Für TCP Boost verwenden, das ist auch richtig in Standard-C++ integriert

    Viele liebe Grüße
    The User