Forum huvudsida -> Programmering -> C++, cctype
Sidor: 1
Sat4n1C | 19:20 - 8:e Oktober 2006 | Post #1 | |
Medlem Inlägg: 33 Skicka PM |
Hej, jag försöker göra ett program som läser in tangentbordsinmatning fram till tecknet @ och sen ekar den inmatningen förutom siffror och konverterar versaler till gemener och tvärt om.
Vad är det jag gör som är fel? |
Independence | 21:03 - 8:e Oktober 2006 | Post #2 | |
Administratör Inlägg: 1800 Skicka PM |
Vad är det som blir fel? ------------------------- Vi är riddarna som säger fiskbulle! |
Sat4n1C | 21:33 - 8:e Oktober 2006 | Post #3 | |
Medlem Inlägg: 33 Skicka PM |
Om jag skriver tex "hej 123@ hej", så ekar den bara hej 123 blixtsnabbt sen stängs den ner. Den skriver inte HEJ som den ska göra. |
Lajnold | 21:56 - 8:e Oktober 2006 | Post #4 | |
Medlem Inlägg: 65 Skicka PM |
tolower/toupper ändrar inte på variabeln som skickas med, utan returnerar istället det ändrade tecknet. Du måste därför tilldela returvärdet till 'ch' om det ska bli någon ändring. ------------------------- Ingen signatur! Senast redigerad 21:56 - 8:e Oktober 2006 |
Sat4n1C | 22:13 - 8:e Oktober 2006 | Post #5 | |
Medlem Inlägg: 33 Skicka PM |
Aha, hur ser satsen ut om man tilldelar returvärdet? EDIT: Märkte nu att jag glömde en sats i koden som förhindrar programmet att eka siffror. Senast redigerad 22:18 - 8:e Oktober 2006 |
Lajnold | 22:20 - 8:e Oktober 2006 | Post #6 | |
Medlem Inlägg: 65 Skicka PM |
ch = toupper(ch); Och motsvarande för tolower. ------------------------- Ingen signatur! Senast redigerad 22:20 - 8:e Oktober 2006 |
Sat4n1C | 22:38 - 8:e Oktober 2006 | Post #7 | |
Medlem Inlägg: 33 Skicka PM |
Okej, tack för hjälpen |
Sat4n1C | 22:52 - 8:e Oktober 2006 | Post #8 | |
Medlem Inlägg: 33 Skicka PM |
Men jag undrar, varför stängs programmet bara ner om man skriver något efter '@' ? |
Lajnold | 23:01 - 8:e Oktober 2006 | Post #9 | |
Medlem Inlägg: 65 Skicka PM |
Eftersom slutet av programmet nås. Därför stängs det av. När man skriver '@' så hoppar programmet ur while-loopen, skriver ut texten, väntar på att man ska trycka enter, och stängs av. Var det inte så du ville att det ska bli? ------------------------- Ingen signatur! |
Sat4n1C | 23:06 - 8:e Oktober 2006 | Post #10 | |
Medlem Inlägg: 33 Skicka PM |
Man får aldrig chansen att trycka ner enter om man skriver något efter '@', har du testat kompilera det? |
Lajnold | 23:12 - 8:e Oktober 2006 | Post #11 | |
Medlem Inlägg: 65 Skicka PM |
När jag kör programmet så väntar det på att jag ska trycka enter. Konstigt att det inte blir så för dig. ------------------------- Ingen signatur! |
Lajnold | 23:16 - 8:e Oktober 2006 | Post #12 | |
Medlem Inlägg: 65 Skicka PM |
Ah, nu förstår jag hur det är som du menar. Ett sätt att lösa det på, som dessutom kan ses som bättre än cin.get() för att plocka bort tecken, är att istället använda cin.ignore() för att plocka bort alla tecken ut bufferten. // ... //rdbuf() returnerar den buffert som cin använder, och den har en funktion, in_avail(), som returnerar hur mycket som finns i bufferten. Använd detta som argument för ignore() för att slänga bort alla tecken ut bufferten. cin.ignore(cin.rdbuf()->in_avail()); cin.get(); // ... ------------------------- Ingen signatur! Senast redigerad 23:19 - 8:e Oktober 2006 |
Sat4n1C | 23:16 - 8:e Oktober 2006 | Post #13 | |
Medlem Inlägg: 33 Skicka PM |
Fast det går fortvarande inte. Senast redigerad 23:23 - 8:e Oktober 2006 |
Sidor: 1
Forum huvudsida -> Programmering -> C++, cctype
Du får inte posta i den här tråden | Till toppen
Datum
2024-05-07 22:18
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.