Hans_Henrik Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) skulle lage ett script som skulle bare spørre brukeren om hvor mange "linijer ned" consolen skulle gå, så klaget den på std::endl; så spørsmål 1: hvorfor trenger "std::endl" og starte med "std::cout" ? den sier "error: statement cannot resolve address of overloaded function" (ikke at det er noe problem og bruke std::cout << std::endl;, bare høres unødvendig ut ) spørsmål 2: bruker std::string og std::cin, men hvordan kan jeg lage en-eller-annen error hvis det ikke er ett nummer som er puttet in? (jeg prøvde uten, programmet krasjer ikke, ingen error etc, når jeg putter "blabla" i std::cin >> EnInt; , EnInt blir bare 0) Endret 16. april 2009 av Hans_Henrik Lenke til kommentar
Giddion Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) 1. std::endl må sendes til en stream, hvilke stream skal den sendes til? Den finner ikke det ut automatisk 2. Jeg husker ikke helt hvordan man gjør det i c++, men her er funksjonene for C String conversion: atofConvert string to double (function) atoiConvert string to integer (function) atolConvert string to long integer (function) strtodConvert string to double (function) strtolConvert string to long integer (function) strtoulConvert string to unsigned long integer (function) Endret 16. april 2009 av Giddion Lenke til kommentar
zotbar1234 Skrevet 17. april 2009 Del Skrevet 17. april 2009 skulle lage ett script som skulle bare spørre brukeren om hvor mange "linijer ned" consolen skulle gå, så klaget den påstd::endl; så spørsmål 1: hvorfor trenger "std::endl" og starte med "std::cout" ? Grrr... "Å starte". å, Å, ÅÅÅÅÅÅÅ! Måtte lese Giddion sitt svar først for å forstå spørsmålet. den sier "error: statement cannot resolve address of overloaded function"(ikke at det er noe problem og bruke std::cout << std::endl;, bare høres unødvendig ut ) Unødvendig? Nuvel. Du kan bruke std::endl(std::cout), hvis det er enklere, men hvilken IO stream skulle endl gjøre widen + flush på, når du ikke sier noe? spørsmål 2: bruker std::string og std::cin, men hvordan kan jeg lage en-eller-annen error hvis det ikke er ett nummer som er puttet in? (jeg prøvde uten, programmet krasjer ikke, ingen error etc, når jeg putter "blabla" i std::cin >> EnInt; , EnInt blir bare 0) Du kan sjekke stream state: if ( !(std::cin >> count ) ) std::cerr << "Input failed\n"; (det er et litt mer spennende spørsmål om hva man gjør med stream-tilstanden, og hvordan man kan gjøre noe fornuftig etter å ha oppdaget feilen). En interessant bok som tar for seg IO i C++ er "C++ IO streams and locales" av Langer og Kreft. Lenke til kommentar
Hans_Henrik Skrevet 17. april 2009 Forfatter Del Skrevet 17. april 2009 antar jeg *formulerte* posten litt dårlig.. sorry og takk for svarene, løste det med en *false-check* (btw er det sån at std::cin returnerer en *bool verdi*? (antar det)) Lenke til kommentar
zotbar1234 Skrevet 17. april 2009 Del Skrevet 17. april 2009 antar jeg *formulerte* posten litt dårlig.. sorry og takk for svarene, løste det med en *false-check* (btw er det sån at std::cin returnerer en *bool verdi*? (antar det)) En stream (ikke bare std::cin) kan konverteres til bool, ja. Lenke til kommentar
BenjaminBotten Skrevet 1. mai 2009 Del Skrevet 1. mai 2009 ville det ikke være greiere for deg å bruke en header så du slipper skrive std:: hele tiden? #include <iostream> er handy vettu. ^^ Lenke til kommentar
zotbar1234 Skrevet 2. mai 2009 Del Skrevet 2. mai 2009 ville det ikke være greiere for deg å bruke en header så du slipper skrive std:: hele tiden?#include <iostream> er handy vettu. ^^ ... bortsett fra at #include <iostream> ikke inneholder using directive for std-navnerommet. #include <iostream> er nødvendig, men include-direktivet hjelper ikke hva std::-navnerommet angår. Lenke til kommentar
[kami] Skrevet 2. mai 2009 Del Skrevet 2. mai 2009 om du skriver using namespace std; over main'en din, så slipper du å skrive std:: forran cin/cout. Det regnes ikke som god programmeringsskikk å legge using namespace ... i header filer. da forsvinner poenget med namespaces helt. Lenke til kommentar
BenjaminBotten Skrevet 2. mai 2009 Del Skrevet 2. mai 2009 Darn it,,, blingsa på den ^^ Var sent. Og jeg er litt noob so... Lenke til kommentar
Hans_Henrik Skrevet 3. mai 2009 Forfatter Del Skrevet 3. mai 2009 @namespace vell, jeg synes også at det gjør det vanskeligere for andre og forstå "eksempel-koder" når namespace er brukt i store koder.. namespace std; namespace boost; (flere namespace's her) (noen titals koder) getline(cin, find_last(s, "blabla")); og så en fyr som skal bare se akkurat hvordan den ene linjen virker: getline what??? find_last whaa??? o-s-v så jeg liker faktisk ikke den namespace greia så veldig... Lenke til kommentar
Jassogitt Skrevet 3. mai 2009 Del Skrevet 3. mai 2009 namespace std er nesten standard å ha med, og man sparer mye tid. Lenke til kommentar
[kami] Skrevet 4. mai 2009 Del Skrevet 4. mai 2009 namespace std er nesten standard å ha med Nei, her tar du feil. I public libraries i c++ bruker man ikke using ... blah, for dette gjør så alt kommer i global scope. For å illustrere hvorfor using namespace whatever sjelden eller aldri brukes i public libraries og profesjonelle produkter. Tenk deg at du har skrevet et biblotek der du tar nytte av at std::map sin implementasjon fungerer som en insert update.. (ie: navnAlderLookup[navn] = 12; // her vil enteries lages om det ikke finnes, hvis ikke vil enterien oppdateres). Om du ikke skriver std::map<std::string, uint32> navnAlder, og heller map<string, uint32> navnAlder; kan du få en helt annen implementasjon av map enn den du tror, som kanskje av optimerinsgrunner ikke har denne funksjonaliteten som er helt nødvendig for at koden din skal funke. og man sparer mye tid. Vil du spare tid så bruk typedefs. typedef std::map<std::string, uint32> navnLookupMap_t; eller installer visual assist. 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å