hakonvl Skrevet 4. april 2009 Del Skrevet 4. april 2009 getlinene i koden kopierer det du har skrevet i cin fram til newline er funnet.mulig jeg tar feil angående ignore, men det virker som om den sletter restene i cin. Tips: Jeg syntes www.cplusplus.com funker bra til å slå opp funksjoner, mulig du også vil like den. Ok, takk. I boka står ignore() forklart som: Funksjonen ignore() gjør det mulig og hoppe over tegn i inn bufferet. Funksjonskallet ingore(10, #) vil hoppe over forekomstene av #, men maks 10 ganger. Skjønner ikke helt hvorfor det står der det står. Hvorfor ikke la være å bruke getline() og bare bruke en normal cin setning f. eks? Lenke til kommentar
Giddion Skrevet 5. april 2009 Del Skrevet 5. april 2009 <snip>Skjønner ikke helt hvorfor det står der det står. Hvorfor ikke la være å bruke getline() og bare bruke en normal cin setning f. eks? Hvis du stryker linjen og skriver inn "123 123" når den spør etter alder så skjønner du hvorfor Den fjerner rester som måtte ligge igjen fra cin >> alder siden den stopper å lese fra cin når den treffer space eller endline, hvis du ikke legger inn en space når den spør etter alder vil du ikke merke noe. Lenke til kommentar
hakonvl Skrevet 8. april 2009 Del Skrevet 8. april 2009 Ok, takk for kjempegod hjelp Lenke til kommentar
Erlend85 Skrevet 14. april 2009 Del Skrevet 14. april 2009 Hvorfor tar programmet mitt: int main(){return 0;} Hele 7KB?! I relase config? vc++ express mode! Og hvorfor tar det 27KB i debug config? Lenke til kommentar
GeirGrusom Skrevet 14. april 2009 Del Skrevet 14. april 2009 Fikk den ned i 2kB men da måtte jeg skru på "Ignore all default libs" Men da er du uten CRT. Lenke til kommentar
Erlend85 Skrevet 14. april 2009 Del Skrevet 14. april 2009 Leker med c++! Hva kan jeg ha gjort annerledes med følgende kode: Leker med å lage en sånn log skriver! så jeg kan se hva som blir gjort i et program! Den er heeelt simpel! Men sånn må det være i starten main.cpp #include "logWriter.h" int main() { LogWriter log("test.txt"); log.add("lol!"); return 0; } logWriter.cpp #include "logWriter.h" LogWriter::LogWriter(char *file) { filename = file; } void LogWriter::add(char *content) { using namespace std; ofstream logFile(filename, ios::app); if (!logFile) { return; } logFile << content << endl; return; } logWriter.h #ifndef LOG_WRITER_H #define LOG_WRITER_H #include <iostream> #include <fstream> #include <string> class LogWriter { private: LogWriter(); char *filename; public: LogWriter(char *filename); void add(char *content); }; #endif Jeg må innrømme jeg ble glad når jeg fikk denne til å funke! Tips? Lenke til kommentar
Giddion Skrevet 15. april 2009 Del Skrevet 15. april 2009 (endret) <snip>Tips? Jeg elsker at folk spør om det 1. Du kan og bør sende data som ikke skal endres som const. Kort sagt legg const før char * i funksjonene dine. 2. Jeg syntes du burde bruke std::string og ikke char* i c++ kode. 3. Etter en rask kikk ser det ikke ut som headeren trenger noen av filene du includerer (iostream, fstream, string). Legg alt slikt (som man ikke trenger i headeren) i source filen. Hvis du gjør det slipper du at andre headere som inkuderer logWriter.h får med de andre på kjøpet. 4. Jeg er ikke helt sikker på hvordan using namespace std; fungerer inni et scope, men jeg liker ikke at det er inni et scope så jeg ville lagt det i toppen av source filen edit: 5.!!! Ops.. jeg så ikke en alvorlig feil i koden din ... vel jeg regner med du ikke mente det slik. På linje 5 i source filen kopierer du ikke tekst strengen men du kopierer bare pekeren til tekststrengen. Dette er en meget alvorlig feil og det er etter min mening bare flaks at programmet ditt overhode kjører. Endret 15. april 2009 av Giddion Lenke til kommentar
Erlend85 Skrevet 15. april 2009 Del Skrevet 15. april 2009 Giddion! Takk skal du ha! Fikk et lite understanding moment så vidt her! Her er hva jeg har gjort nå! main.cpp #include <iostream> #include "logWriter.h" int main() { using namespace std; LogWriter log("shit.log"); log.add("Da starter vi logging :)."); return 0; } logWriter.cpp #include <fstream> #include <string> #include <time.h> #include "logWriter.h" using namespace std; LogWriter::LogWriter(string file) { filename = file; } void LogWriter::add(string content) { ofstream logFile(filename.c_str(), ios::app); if (!logFile) { return; } char date[9]; _strdate(date); logFile << date << " - " << content << endl; return; } logWriter.h #ifndef LOG_WRITER_H #define LOG_WRITER_H using namespace std; class LogWriter { private: LogWriter(); string filename; public: LogWriter(string filename); void add(string content); }; #endif Skal ta en omgang med de pekerne igjen... herk! Igjen! Takk Lenke til kommentar
Erlend85 Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) Jeg har noe problemer med koden her: #include <iostream> #include <sstream> #include "logWriter.h" using namespace std; void drawTicTacToeBoard(const char board, const int boardSize) { for (int y = 0; y < boardSize; y++) { for (int x = 0; x < boardSize; x++) { /* ostringstream thisRow = ""; if (x == 0 && y == 0) { thisRow << " x"; } else if (y == 0 && x != 0) { thisRow << " " << x << " "; } else { if (board[x][y] == 'X') { thisRow << " X "; } else if (board[x][y] == 'O') { thisRow << " O "; } else { thisRow << " "; } } */ cout << board[y][x] << endl; /// DETTE ER LINJE 36!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! } // cout << thisRow.str() << endl; } } int main() { LogWriter log("shit.log"); log.add("Da starter vi logging :)."); const int boardSize = 9; char board[boardSize][boardSize] = {'0'}; drawTicTacToeBoard(board[boardSize][boardSize], boardSize); return 0; } Er en feil: c:\c++\test\test\main.cpp(36) : error C2109: subscript requires array or pointer type Linje 36 er merka godt! Jeg skjønner ikke hva som er gale. Endret 16. april 2009 av Erlend85 Lenke til kommentar
Giddion Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) <snip>Skal ta en omgang med de pekerne igjen... herk! Igjen! Takk Tar en omgang til jeg også da 1. Det å legge using namespace std; i en header er no-no ettersom det forandrer namespacet til alle som inkluderer headeren 2. Hva vil du oppnå med if (!logFile) { return; } <snip>Er en feil: c:\c++\test\test\main.cpp(36) : error C2109: subscript requires array or pointer type Linje 36 er merka godt! Jeg skjønner ikke hva som er gale. Det som er feil er at board ikke er en array eller pointer. Endret 16. april 2009 av Giddion Lenke til kommentar
Erlend85 Skrevet 16. april 2009 Del Skrevet 16. april 2009 Hei! ostringstream envariabelgreie; Hvordan kan jeg liksom... envariabelgreie = null! Få sletta innholdet i den ? Lenke til kommentar
Giddion Skrevet 16. april 2009 Del Skrevet 16. april 2009 Hei! ostringstream envariabelgreie; Hvordan kan jeg liksom... envariabelgreie = null! Få sletta innholdet i den ? hæ hø.....hva prøver du egentlig på, Lenke til kommentar
GeirGrusom Skrevet 16. april 2009 Del Skrevet 16. april 2009 Du kan ikke sette en stack-allokert variabel lik null. Det er viktig at denne sletter seg selv riktig. Det du derimot kan gjøre, er å skrive: envariabelgreie = ostream([en streambuf greie]); Men du kan ikke bruke ostream til å slette noe som helst... det er en stream, og ikke noe mer, den kan bare gi ifra seg informasjon. Lenke til kommentar
Erlend85 Skrevet 16. april 2009 Del Skrevet 16. april 2009 Jeg driver å legge til data i den! forså å printe ut i løpet av en løkke. Fordi jeg skal skrive ut ting radvis. Lenke til kommentar
GeirGrusom Skrevet 17. april 2009 Del Skrevet 17. april 2009 ...hæh? Jeg tror det jeg skrev skal svare på spørsmålet ditt, men jeg tror du vet hva du vil, men du vet bare ikke hvordan. Du vil slette det som står på skjermen, ikke sant? Som sagt kan ikke ostream gjøre dette uten å fylle hele skjermen med mellomrom (den kan bare gi ifra seg informasjon til consolen) Lenke til kommentar
Erlend85 Skrevet 17. april 2009 Del Skrevet 17. april 2009 Sorry! Var sløv forklaring. Jeg driver å lager det tic tac toe spillet. Jeg har da x og y koordinater. Jeg kjører fyrst en Y løkke, så en X løkke inni Y. Når X løkka har kjørt 9 ganger, skal alle denneStreamgreia << data; <-- tingene printes ut for hver Y. Men jeg definerer en ny stream greie for HVER y! Jeg hadde håpa jeg definere stream greier FØR Y, og bare pusse den ut. Eller er det same shit? Lenke til kommentar
Giddion Skrevet 17. april 2009 Del Skrevet 17. april 2009 Sorry! Var sløv forklaring. Jeg driver å lager det tic tac toe spillet. Jeg har da x og y koordinater. Jeg kjører fyrst en Y løkke, så en X løkke inni Y. Når X løkka har kjørt 9 ganger, skal alle denneStreamgreia << data; <-- tingene printes ut for hver Y. Men jeg definerer en ny stream greie for HVER y! Jeg hadde håpa jeg definere stream greier FØR Y, og bare pusse den ut. Eller er det same shit? ....hæææ?......gruble gruble...... hæ? Jeg er fortsatt ikke helt med (ble litt mye greier og ting), men jeg tror du prøve å lagre dataene for så printe ut alle linjene på en gang.. riktig? Kan du ikke bruke std::string til å mellomlagre linjene? skal alle denneStreamgreia << data; <-- tingene Hva i alle dager er det du prøver å forklare her? hvis du mener std::cout så skriv det hvis du mener ostream så skriv det. Det er mulig andre er mer med, men jeg er et stykke fra det. Lenke til kommentar
hakonvl Skrevet 21. mai 2009 Del Skrevet 21. mai 2009 (endret) Hei! Driver og leser litt på OOP, og har kommet til det med virtuelle funksjoner, men da stopper det... Noen som kan forklare litt på norsk (Er vel ikke den beste i engelsk, i tillegg til at jeg går i 8. klasse. Er ikke fult utlært enda ), blir litt sliten av lese side på side på engelsk om ting jeg ikke forstår med det første... Leser kapittlet Polymorphism and Virtual Member Functions i boka Starting out with C++ From control structures through objects vis det har noe og si. Endret 21. mai 2009 av Rockie Lenke til kommentar
GeirGrusom Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 (endret) Virtuelle funksjoner er metoder som kan byttes ut i sub-klasser. class MyClass { public: virtual char* foo() { return "This function can be overidden"; } }; class MyInheritedClass : public MyClass { public: virtual char* foo() { return "This function has been overidden!"; } }; int main() { MyClass *foo = new MyClass(); cout << foo.foo() << endl; delete foo; foo = new MyInheritedClass(); cout << foo.foo() << endl; delete foo; return 0; } I noen programmeringsspråk (Java og D) er alle funksjoner virtual som standard, og der skriver en final for å eksplisitt si at funksjonene ikke er virtual. I C++ derimot er alle funksjoner final med mindre de blir markert virtual. Endret 22. mai 2009 av GeirGrusom Lenke til kommentar
hakonvl Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Takk forstår litt mer av det nå, men hva er egentlig bruksområdet til dette? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå