Zum Inhalt springen

Knuddlbaer

Mitglieder
  • Gesamte Inhalte

    119
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Knuddlbaer

  1. Also ich würd' sagen das wichtigste steht in der Onlinehilfe bzw. in der MSDN ;o)
  2. #include <vector> #include <iostream> #include <iterator> #include <fstream> #include <vector> using namespace std; int main(int argc, char * argv[]) { vector<int> myVec; myVec.reserve(100); // SInnlosesbefüllen des Vectors, hauptsach da is was drinn for(int i = 0;i < 100;++i) myVec.push_back(i); fstream datei("Ausgabe.txt",ios::out); if(!datei) return 20; // Speichern datei<<myVec.size()<<" "; // Optional // Das ist das ganze Speichern. Bei Fragen fragen copy(myVec.begin(),myVec.end(),ostream_iterator<int>(datei," ")); datei.close(); // Datei schliessen (wollen ja wieder draus lesen // Lesen datei.open("Ausgabe.txt",ios::in); if(!datei) return 20; myVec.clear(); // Vector leer machen, sonst heisst es noch ich les nix das stand da ja schon ) vector<int>::size_type size; //Optional datei>>size; //Optional myVec.reserve(size); //Optional istream_iterator<int> begin(datei); // Anfangsiterator auf die Datei istream_iterator<int> end; // Enditerator copy(begin,end,back_inserter(myVec)); // Und wieder auslesen. // Kontrollausgabe ob das auch geht copy(myVec.begin(),myVec.end(),ostream_iterator<int>(cout," ")); return 0; } [/PHP] Mit dem reserve verhinderst Du dauerndes neualloziieren des Speichers und die damit verbundenen laufkosten. Wenn es also Zeitkritisch wird lohnt es sich die größe mitzuschreiben. Ansonsten recht einfach , oder ? )
  3. Schau Dir mal strchr an. Tabs sind \t
  4. EnumFontCallBackEx EnumFonts
  5. Stümmt, jetzt wo Du es sagst find ich es auch im draft ;o) thx
  6. Der Compiler darf sie erst inline machen wenn er dazu angewiesen wird ?! Aber recht haste, wenn sie inline ist muß sie wie die templates in jeder UE bekannt sein.
  7. Technisch macht es wohl keinen Unterschied. Es ist einfach Übersichtlicher da man in der Deklaration der Klasse leichter einen Überblick findet. Hinzu kommen die punkte die bereits genannt wurden, der eigentliche Code kann bei Trennung in libs obj dll oder sonstwo gehalten werden. (Ausnahme sind templates, hier muß der Compiler die Definition zur Compilezeit kennen.)
  8. Knuddlbaer

    inline, this ??

    Auf Hardwareebene sehr interesannt, nur als C++ Programmierer hat man da keinen Einflus drauf. (Was passiert wenn foo().doAnything aufgerufen wird, und dahinter verbergen sich massig andere Aufrufe ?!) Ich gehe dann davon aus das der eingesetzte Compiler den Source optimiert. Wie wird das eigentlich gehandelt wenn: foo(veryBigAndComplexObject byValue) { byValue.Anything(); } Aufgerufen wird ?
  9. Ich verstehe das Problem nicht. Mal abgesehen davon das %i nie eine fließkomma zahl bearbeitet und immer die nachkommestellen fehlen dürften... Wieso liest Du die Zahlen ein und wandelst sie wieder als String ? Der Umgekehrte Weg wäre einfacher. Erst als Text einlesen , dann das komma ersetzen und wenn nötig (wenn Du das überhaupt brauchst) in eine Zahl wandeln. Das könnte in C++ beispielsweise so aussehen: #include "stdafx.h" // Zum speichern der Werte in einem Vector #include <vector> // Zum einlesen aus Datei #include <fstream> // Naja , strings #include <string> // Für ptr_fun #include <functional> // für for_each und copy #include <algorithm> // Für die Ausgabe #include <iostream> #include <iterator> using namespace std; // Sucht das erste , und ersetzt es durch ein . void replacepoint(std::string & rep) { std::string::size_type pos; pos = rep.find(","); if(pos == std::string::npos) return; rep.replace(pos,1,"."); } int main(int argc, char * argv[]) { ifstream datei("e:\\test\\test.txt"); if(!datei) return 20; vector<string> platzhalter; string help; datei>>help; // 1. einlese versuch if(datei.fail()) // Prüfen ob ok return 20; do { platzhalter.push_back(help); // Speichern datei>>help; // Nächsten lesen }while(!datei.eof()); // Alles ok ? Wenn ja loop // Jeden der eingelesenen Zeichenketten nach , durchsuchen und durch . ersetzten for_each(platzhalter.begin(),platzhalter.end(),std::ptr_fun(replacepoint)); // Ergebnis auf dem Bildschirm ausgeben copy(platzhalter.begin(),platzhalter.end(),ostream_iterator<string>(cout,"\n")); return 0; } [/PHP]
  10. Knuddlbaer

    inline, this ??

    Verstehe ich nicht. Bei Inline wird der Quelltext direckt an die Stelle eingefügt. Warum muß da was in Registern gerettet werden ? Bei einem Sprung dagegen muß der Stack Arbeit leisten ?! *Mal nach aufklräung umschau*
  11. Dein Problem ist das das Memofeld ZEILENorientiert ist, nicht zeichenorientiert. Entweder Du ruft lines->String += auf oder baust Dir die Zeilen vorher zusammen. Ich hab keine Idee wo Dein Problem ist. Versuchs mal von einer anderen Seite zu erläutern, so kommen wir nicht weiter. thx Michael
  12. Hi! Das Memofeld->Lines->String oder wie das was (Borland is ne weile her) speichert immer eine Zeile! d.h. Du hast 2 Möglichkeiten: 1. den Sring zuvor "zusammenbauen" da würde ich aber vom plain C weggehen und C++ nehmen (std::string) 2. Memofeld->Lines->String += DasEineZeichen verwenden und i erhöhen wenn Du eine neue Zeile brauchst. (Das wird aber langsam). Mein Tipp wäre also: Schreibe Dir eine Funktion die einliest bis das Kriterium für eine neue Zeile erreicht ist. Wenn Du das erreicht hast: Schreibe nun eine Funktion die obrige Funktion verwendet um das Memofeld zeilenweise zu füllen. Vorteile: 1. Du liest zeichenweise aus wie Du es sollst 2. Du füllt das Memo zeilenweise wie es am praktischsten ist O:o) 3. Du kannst später die Funktion wegwerfen und Memo::loadFromFile o.ä. direckt verwenden ;o)
  13. Hallo Memo1->Lines->Strings = fgetc(datei); Hi! int fgetc(); Es sieht so aus als hätte AnsiString einen Operator=(int); So geht es nicht. Vesuch folgendes: mo1->Lines->Strings = static_cast<unsigned char>(fgetc(datei)); Wieso liest Du aber Zeichenweise ein ? Zeilenweise wäre einfacher bzw. die Methoden des Memos direckt zu verwenden. Was genau hast Du vor ? Mir erscheint die Art wie Du das Memofeld füllen willst ungeeignet. Beschreibe mal bitte was Du machen möchtest bzw. warum es ausgerechnet zeichenweise sein muss.
  14. c_str() ermöglicht es den AnsiString an eine Funktion zu übergeben die char * erwartet. (bzw. const char *) const char * AnsiString::c_str(); Dies kann nicht als L Wert verwendet werden.
  15. Ah... Hubs... :floet: Ich sollte erst :mod: dann schreiben. Sorry Versuch mal: Memo1->Lines->Strings[j] += fgets(); (Wobei ich immer noch Zeilenweise einlesen und Zeilenweise zuordnen sinvoller halte und ich meine das das Memofeld auch eine MEthode lodfromfile o.ä. anbietet).
  16. Hallo, zu Zeiten von C++ kann man sich das einfacher machen mit dem Zeilenweise auslesen: #include <iostream> #include <fstream> #include <string> std::fstream datei("c:\\1.dmp"); std::string temp; while(getline(datei,temp)) // liest ALLE Zeilen ein. Egal wie groß sie sind. // Du hast in temp dann immer EINE Zeile stehen. { std::cout<<temp<<'\n'; // Hier mach irgendwas mit der Zeile. Tip: wenn Du const char* brauchst: temp.c_str() } [/PHP]
  17. Hi! Ich würde mir mal gedanken um Dein Design machen. Public Variablen haben in einer Klasse nichts verloren. Dann habe ich nicht verstanden was Du für ein Problem hast. Bekommst Du vom Compiler eine Ferhlermeldung ? Wenn ja welche ? Ansonsten würde es sich eventuell anbieten alle 3 Klassen von Base abzuleite und eine Liste auf Base * zu halten und über virtuelle Methoden zu arbeiten. Beschreib das Problem bitte mal näher ggf. mit Quellcode
  18. Ups... mal wieder zu viel ++ gesehen
  19. Hallo, schau Dir doch mal den std::vector an. Er besitzt dynamisches verwalten der elemente und einen operator[]
  20. LPDSTR -> wie ist der definiert ? Hört sich an als könnte es DSTR * sein. Das würde dann DSTR *** lpRows geben. Ist es das was Du beabsichtigst ?
  21. Mit welchem Compiler hast Du gearbeitet ? Wenns nen VC6 VC7 oder Borland 6 ist, schick das PRojekt mal per mail. Interessiert mich das problem )
  22. Zeig mal bitte den Destruktor
  23. Hi! CTime dürfte MFC sein und hat mit dem Standard nicht viel zu tun.
  24. Knuddlbaer

    C++ lernen

    Hallo, ich möchte hier noch folgende Bücher erwähnen: The C++ Standard Library ISBN 0201379260 Effektiev C++ ISBN 3827313058 Mehr Effektiev C++ ISBN 3827312752 Effekive STL: ISBN 0201749629 Exceptional C++ ISBN 3827317118 Wie das C++ Buch von Stousup nicht unbedingt als einstiegsbuch zu Empfehlen aber eine sehr sinvolle Lektüre die nicht fehlen sollte.
  25. Zu diesem Thema dürfte folgender Link interessant sein: http://cplus.kompf.de/artikel/dates.html

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...