Permalänk
Medlem

C++ problem - nybörjare

Hej

Är relativt ny inom C++ och har kört fast på ett program som jag tänkte göra.
Poängen är att man skall skriva in en rad text som sedan skall gås igenom och
räkna upp alla blank steg i den inmatade raden text.

Först skall man initiera en Raknare som sedan skall använda metoder för att räkna alla utvalda tecken genom en for sats.

Problemet är att jag har satt räknaren att starta på 0, och gå till max 10 (valfritt såklart)
men programmet räknar inte upp variabeln sv (start_value). Skulle gärna behöva hjälp för att jag förstår inte alls var felet ligger.
Main:

#include <iostream> #include <string> #include "raknare.h"; using namespace std; int main(){ Raknare r(0, -3, 10); string text_line; cout << "Enter a line of text: "; cin >> text_line; for(int i = 0; i < text_line.size(); i++){ if(text_line[i] == ' ') r.countUp(); } cout << r.showCounter() << endl; system("pause"); return 0; }

Raknare.cpp

#include "raknare.h"; #include <iostream> using namespace std; void Raknare::countUp(){ if(sv < mv) sv++; else cout << "The counter is already at the maximum number chosen!" << endl; } void Raknare::countDown(){ if(sv > lv) sv--; else cout << "The counter is already at the smallest number chosen!" << endl; } int Raknare::showCounter(){ return sv; }

Raknare.h

#ifndef RAKNARE_H #define RAKNARE_H using namespace std; class Raknare{ public: Raknare(int start_value, int least_value, int max_value) : sv(start_value), lv(least_value), mv(max_value){}; void countUp(); void countDown(); int showCounter(); private: int sv, lv, mv; }; #endif

Tack för svar

Permalänk
Medlem

Ditt problem är att cin >> text_line; bara läser fram till whitespace, så du behöver använda getline för att läsa in en helrad, till radbrytning.

http://www.cplusplus.com/reference/string/getline/

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

ja det var ju så jag tänkte göra från början men missade tydligen det hehe tackar =).
Ska se om det löser sig då