-
Gesamte Inhalte
119 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Knuddlbaer
-
Visual C++ Befehle
Knuddlbaer antwortete auf geloescht_saschabu's Thema in C++: Compiler, IDEs, APIs
Also ich würd' sagen das wichtigste steht in der Onlinehilfe bzw. in der MSDN ;o) -
#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 ? )
-
Schau Dir mal strchr an. Tabs sind \t
-
wie prüfen ob fonts installiert sind?
Knuddlbaer antwortete auf aifl's Thema in C++: Compiler, IDEs, APIs
EnumFontCallBackEx EnumFonts -
Stümmt, jetzt wo Du es sagst find ich es auch im draft ;o) thx
-
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.
-
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.)
-
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 ?
-
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]
-
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*
-
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)
-
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.
-
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]
-
Auf variablen anderer Klassen zugreifen?
Knuddlbaer antwortete auf PeterKirchner's Thema in C und C++
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 -
Ups... mal wieder zu viel ++ gesehen
-
Hallo, schau Dir doch mal den std::vector an. Er besitzt dynamisches verwalten der elemente und einen operator[]
-
Mysteriöse Wertzuweisung
Knuddlbaer antwortete auf Guybrush Threepwood's Thema in C++: Compiler, IDEs, APIs
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 ? -
Mysteriöse Wertzuweisung
Knuddlbaer antwortete auf Guybrush Threepwood's Thema in C++: Compiler, IDEs, APIs
Mit welchem Compiler hast Du gearbeitet ? Wenns nen VC6 VC7 oder Borland 6 ist, schick das PRojekt mal per mail. Interessiert mich das problem ) -
Mysteriöse Wertzuweisung
Knuddlbaer antwortete auf Guybrush Threepwood's Thema in C++: Compiler, IDEs, APIs
Zeig mal bitte den Destruktor -
Hi! CTime dürfte MFC sein und hat mit dem Standard nicht viel zu tun.
-
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.
-
Zu diesem Thema dürfte folgender Link interessant sein: http://cplus.kompf.de/artikel/dates.html