Zdravím Vás, C++ sa venujem už pár mesiacov, najskôr v škole a teraz ako voľnočasová aktivita a narazil som na niečo čo ma mätie. Konkrétne mám problém s objektom "cin", v škole sme ho vždy používali len vo forme cin >> vstup; a všetko fungovalo, ale začal som si robiť rôzne zadania a cvičenia a zistil som, že sa používa aj forma cin.get(), cin.getline(), getline(cin,...) tieto som ako tak pochopil na základe metódy pokus/omyl, ale neide mi do hlavy použitie takéhoto zápisu: (cin >> vstup;).get() ... vie mi niekto prosím po lopate vysvetliť, kedy použiť jednotlivé metódy objektu cin?
#1PeterSura
tezko radit - musis vedet co chces a podle toho pak pouzit (samozrejme to predpoklada ze mas prehled co co umi - tj. musis si o tom aspon neco letmo procist)
Nektere zapisy jsou pak vesmes aliasy (napriklad zmineny cin+getline). Operatory >> u cout a << u cin pak vraceji zase cin (jinak by se nedalo zretezit - tj. cin >> a >> b >> c; ) tj. cin >> a; vlastne vrati zase objekt cin - tim s vysledkem muzes podle toho zachazet: (cin >> vstup).get() je vesmes nacteni jedne hodnoty do vstup a get() by mel pak nacist jeden znak za tim.
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Tu je napr. jeden fragment kódu, kde mi to nie je jasné:
#include <iostream>
#include <string>
using namespace std;
struct spolocnost {
string meno;
double prispevok;
};
int main()
{
int PocetDarcov, VelkyPatroni=0, Patroni=0;
cout << "Zadajte pocet darcov: ";
(cin >> PocetDarcov).get();
spolocnost *darcovia = new spolocnost [PocetDarcov];
for (int i = 0; i < PocetDarcov; i++)
{
cout << "Darca c." << i+1 << ": " << endl;
cout << "Zadajte jeho meno: ";
getline(cin,darcovia[i].meno);
cout << "Zadajte vysku prispevku: ";
(cin >> darcovia[i].prispevok).get();
}
...
keď som použil len cin >> PocetDarcov; tak som už nemal možnosť zadať meno v tom cykle, ale rovno mi to preskočilo na výšku príspevku... väčšinou mi koniec koncov všetko funguje, mňa len zaujíma prečo tam klasický cin nefunguje
#3PeterSura
protoze po cin >> PocetDarcov zustane na vstupu enter -- toho se asi snazi zbavit tim .get() jinak cin.getline nacte zbytek radku a to by uz taky nemuselo byt nic.. jelikoz uz tam zbyva jen ten enter
kazdopadne kdyz zadas misto cisla neco jinyho tak se ti to krasne zasekne az do konce
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...