Forum huvudsida -> Programmering -> C++, Vilken cin?
Sidor: 1
Sat4n1C | 14:40 - 26:e September 2006 | Post #1 | |
Medlem Inlägg: 33 Skicka PM |
Hej, här kommer jag igen med ännu en fråga Men jag vet inte vilken typ av cin jag ska använda i följande kod för att jag ska kunna skriva in två ord eller flera som bil märke.
Jag vill skapa en dynamisk vektor då av bil strukturen. |
Nissebosselasse | 17:53 - 26:e September 2006 | Post #2 | |
Medlem Inlägg: 490 Skicka PM |
cin.get (ps[i].marke, sizeof(ps[i].marke)); ...borde fungera, om jag förstått vad du menar. ... andra sidan tycker jag du krånglar till det onödigt med en bestämd typ på märket (högst X antal bokstäver). Använd istället en std::string, så slipper du bekymra dig om sådant här. Och behöver du av någon anledning begränsa det till X antal bokstäver, så använd en std::string ändå, men använda bara de X antal första bokstäverna (klipp bort de andra genom att använda substr). Fler tips: du använder new [], alltså ska du använda delete [] också. Skippa detta och använd en std::vector istället. Du slipper tänka på minneshanteringen (det sköter den). ------------------------- http://pushingcows.se Gula Nallen |
Sat4n1C | 18:45 - 26:e September 2006 | Post #3 | |
Medlem Inlägg: 33 Skicka PM |
Hm, efter "cin.get (ps[i].marke, sizeof(ps[i].marke));" så avslutades programmet redan efter frågan om hur många bilar jag vill katalogisera, och jag gör en övning i C++ - Programmering av Stephen Prata. -vningen är såhär: "Konstruera en struktur med namnet bil som innehåller följande information om en bil: märket som sträng i en tecken vektor eller i ett string objekt och tillverkningsåret som ett int-värde. Skriv ett program som frågar användaren om antal bilar att katalogisera. Programmet ska använda new för att skapa en dynamisk vektor med detta antal bil-strukturer. Därefter ska det fråga användaren efter märket (som kan bestå av fler än ett ord) och tillverknings året för varje struktur. Lägg märke till att det här kräver en viss omsorg, eftersom varannan uppgift är numerisk och varannan sträng. Slutligen ska programmet visa innehållet i alla strukturer." alltså ska du använda delete [] också. delete finns där, innan slutet, precis innan cin.get(). Senast redigerad 18:50 - 26:e September 2006 |
Nissebosselasse | 19:39 - 26:e September 2006 | Post #4 | |
Medlem Inlägg: 490 Skicka PM |
delete finns där, innan slutet, precis innan cin.get(). Ser du hakparanteserna? Det finns en skillnad på delete och delete []: den första använder du pekare skapade med new, den andra på vektorer skapade med new []. Du kommer inte få något kompileringsfel - däremot under programkörningen (läs mer här: http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.12 Ber om ursäkt för cin.get (...), ignorera den, jag ledde in dig på villospår där. Du kan använda cin >> ... med en ändring: lägg till en cin.ignore (99, 'n'); på raden efter. ------------------------- http://pushingcows.se Gula Nallen Senast redigerad 19:40 - 26:e September 2006 |
Sat4n1C | 20:12 - 26:e September 2006 | Post #5 | |
Medlem Inlägg: 33 Skicka PM |
Jaha, så då skriver jag "delete [] ps;". Tack Men sen så gör "cin.ignore (99, 'n');" så att det blir lite konstigt. När jag anger bil märket och sedan trycker på enter så hoppar den ner ett steg bara och visar inte nästa fråga. |
Nissebosselasse | 20:20 - 26:e September 2006 | Post #6 | |
Medlem Inlägg: 490 Skicka PM |
Inte 'n', utan '\n' (märk det bakvända snedstrecket). Att föregå ett tecken med bakvänt snedstreck ("backslash") innebär att man gör en escape-sekvens, d.v.s., nästa tecken tolkas som ett typ av kommando. EDIT: hur skulle det vara om man kunde använda sig av bakvända snedstreck i texten utan risk för att de försvinner vid varje ändring...? ------------------------- http://pushingcows.se Gula Nallen Senast redigerad 20:22 - 26:e September 2006 |
Sat4n1C | 20:30 - 26:e September 2006 | Post #7 | |
Medlem Inlägg: 33 Skicka PM |
Aha, jag kopierade de du skrev. Tack . Men jag undrar, i boken har man ju inte lärt sig "cin.ignore (99, 'n');" och man borde ju kunna lösa det på ett sätt som man har lärt sig ur boken, eller? Eller också har jag missat den biten XD Senast redigerad 20:33 - 26:e September 2006 |
Nissebosselasse | 20:35 - 26:e September 2006 | Post #8 | |
Medlem Inlägg: 490 Skicka PM |
Nej, du har rätt, men å andra sidan visar det ju även en viktig aspekt av programmering: det finns inte bara ett sätt att lösa ett problem på. Sedan finns det ju mer eller mindre korrekta sätt att lösa problem på, men det är en annan historia... Finns det förresten ingen sida med lösningar till boken? ------------------------- http://pushingcows.se Gula Nallen |
Sat4n1C | 20:39 - 26:e September 2006 | Post #9 | |
Medlem Inlägg: 33 Skicka PM |
Nej, faktiskt inte, det är därför jag skapar trådar här. Men det är ju bra när man får hjälp |
Sat4n1C | 20:44 - 26:e September 2006 | Post #10 | |
Medlem Inlägg: 33 Skicka PM |
Hm, jag märkte nu att när man skriver in flera ord kommer bara första ordet fram i listan efteråt. |
Sidor: 1
Forum huvudsida -> Programmering -> C++, Vilken cin?
Du får inte posta i den här tråden | Till toppen
Datum
2024-05-07 13:30
Vecka: 19
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.