Ga naar inhoud

C++ Cin. Hoe kun je een string inlezen zonder dat-ie de spat


anoniem

Aanbevolen berichten

Ik zit een console-applicatie te programmeren in C++ en ben een beginner. Ik wil een regel tekst inlezen in een string vanaf een toetsenbord-input. ik gebruik (versimpeld) het volgende: string regel; for (int i=0; i<4; i++) { cin >> regel; } Het lijkt gek, maar ik wil dat die regel-string vijf keer overschreven wordt door wat de gebruiker intikt. Maar wat gebeurt er? De spaties worden als regelovergangen gezien !!! Dus als de gebruiker 5 woorden intikt, en dan "enter doet", is de lus al voorbij ! Hoe voorkom ik dit ?
Link naar reactie
Ik begrijp niet helemaal wat je nou bedoelt, en nog veel minder waarom je een for-loop gebruikt. Is het niet veel makkkelijker om de hele regel in 1 keer in te lezen, en daarna deze string op te knippen in stukjes dmv de spatie In pseudocode: String regel; cin >> regel; for (i = 0; i<= length(regel); i++) { if (regel[i] == ' '); ..... } Op deze manier lijkt het mij wat beter te doen!
Link naar reactie
Een goede manier is om [i:88dd711b7f]cin.getline(variable, stringlength)[/i:88dd711b7f] te gebruiken. Voorbeeld: [code:1:88dd711b7f]#include <iostream.h> int main(void) { const int ArSize = 20; char name[ArSize]; cout << "Geef je volledige naam:n"; cin.getline(name, ArSize); cout << "nJouw naam is " << name << "n"; return 0; }[/code:1:88dd711b7f] Cin.getline leest de hele regel, inclusief de spaties, tot aan het moment dat je de enter toets indrukt. Hoop dat je hier wat aan hebt. _________________ I used to have an open mind but my brains kept falling out. [ Dit Bericht is bewerkt door: DarkScribe op 2002-02-12 19:03 ]
Link naar reactie
[quote:84770ca669] string regel; for (int i=0; i<4; i++) { cin >> regel; } [/quote:84770ca669] Ja, nogal wiedes, je kent de structuur van de for loop? <begin;voorwaarde;actie> je stelt i op 0, en de voorwaarde is dat i kleiner moet zijn als vier, dat is hij bij jou aan het begin al, hij zal deze lus dus maar 1 keer doorlopen. Als je hem 5 keer wilt doorlopen: string regel; for (int i=0; i>=4; i++) { cin >> regel; } GreetzZzz
Link naar reactie
Zowel w.roosenburg als jij hebben beide ongelijk. De For loop geeft een beginwaarde (int i = 0), een voorwaarde waaraan de waarde moet voldoen (i<4) en zolang aan die voorwaarde voldaan wordt zal de lus doorlopen worden. T-Maestro@ heeft dat goed gedaan. Alleen, de lus doet het maar VIER keer, namelijk: i = 0 i = 1 i = 2 i = 3 Zodra i gelijk is aan vier klopt de voorwaarde niet meer dat i kleiner is dan vier. De lus wordt nu dus niet meer doorlopen. Dat maakt het aantal keer dat de lus doorlopen wordt dus 4 en niet 5. Maak de lus [code:1:7892c2f478]string regel; for (int i=0; i<=4; i++) { cin >> regel; }[/code:1:7892c2f478] en het zal 5 keer werken. Kleinigheidje maar C++ doet soms HEEL vreemde dingen met dit soort kleine foutjes. :grin: _________________ I used to have an open mind but my brains kept falling out. [ Dit Bericht is bewerkt door: DarkScribe op 2002-02-15 17:50 ]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...