Brugle Skrevet 23. februar 2004 Skrevet 23. februar 2004 Jeg prøver å lære litt C++ kan en del Perl, men ikke noen proff. Men når jeg prøver å lage et consol program der jeg har en "while" setning med cin inni, så gjør den det første gang og så hopper den over resten. Den couter men ikke cin'er. while (Usermaksantalldager >= Tempdager) { cout << endl << "Hva heter dag nummer " << Tempdager << ": "; cin >> Dager[Tempdager]; Tempdager++; }
Herr_Dude Skrevet 23. februar 2004 Skrevet 23. februar 2004 Ser jo ikke hele koden her, men et par ting du kan sjekke: - initialiserer du verdiene dine ? - Hva er typen til Dager ( og forsåvidt de andre (prøver du å lese en streng er ikke det helt trivielt for en nybegynner i c++, en integer verdi skal være grei) ) ? Tipper helst det er ved punkt 2 problemet ligger...
Brugle Skrevet 24. februar 2004 Forfatter Skrevet 24. februar 2004 Det er nok nummer to ja.. At jeg ikke tenkte på det.. Men hvordan fikser jeg det sånn at den kan lese inn en streng da. Jeg har egentlig intialisertden som en integer, kanskje det burde stått char. Er det noe annet som må fikses?
<BøNilzen> Skrevet 24. februar 2004 Skrevet 24. februar 2004 (endret) For å lage an array av strenger kan du vel bruke en array av pekere, som f.eks. char *Dager[7] Endret 24. februar 2004 av <BøNilzen>
☀ ❄ Skrevet 24. februar 2004 Skrevet 24. februar 2004 Med mindre du har en veldig god grunn til å la være anbefaler jeg å benytte seg av Standard C++ Library: #include <iostream> #include <vector> #include <string> using namespace std; // Lager en vector (et slags "sikkert" array som kan utvides / trekkes sammen) // som heter Dager, med 7 string-elementer vector<string> Dager(7); // ... while (Usermaksantalldager >= Tempdager) { cout << endl << "Hva heter dag nummer " << Tempdager << ": "; cin >> Dager[Tempdager]; Tempdager++; } Vær oppmerksom på at en vector teller som vanlige arrays i C++: Fra 0 til størrelsen-1
_TT_ Skrevet 25. februar 2004 Skrevet 25. februar 2004 Er det ikke mye enklere å bruke printf() istedenfor cout og gets() isteden for cin ?
A_N_K Skrevet 25. februar 2004 Skrevet 25. februar 2004 Hvorfor skulle gets/printf være enklere i dette tilfellet? Med std::string slipper du å tenke på størrelsen av strengen, dessuten anbefales ikke bruk av gets på grunn av faren for bufferoverflyt.
☀ ❄ Skrevet 25. februar 2004 Skrevet 25. februar 2004 Og printf er ikke type-safe, er ikke ditt, er ikke datt, osv. Slikt står da i alle bøker? (F.eks. Item 2 i Effective C++, hvis jeg ikke husker feil).
Duronator Skrevet 25. februar 2004 Skrevet 25. februar 2004 Selv om det hender seg jeg bruker printf() og gets() noen ganger, så tror jeg det er best du vender deg til å bruke så c++'ish kode som mulig, hvilket er mye bedre når du lager større programmer som pga. dette blir mer oversiktlige.
A_N_K Skrevet 25. februar 2004 Skrevet 25. februar 2004 Jeg sier ikke at det nødvendigvis er noe galt med C-funksjoner som printf etc., så vidt jeg vet er den typiske C-implementasjonen av IO raskere enn C++ streams (mye pga. automatisk formattering i streams vil jeg tro). Men i dette tilfellet ser jeg ikke poenget.
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å