error C2039: 'getline' : Ist kein Element von 'std'
-
#include <iostream> #include <math.h> using namespace std; int findPrim(long at, long n) { int ret; n==2?ret=2:n<2?ret=-1:at>sqrt(n+1)?ret=0:n%at==0?ret=at:ret=findPrim(at+1, n); return ret; } int main() { while(1) { long pPrim; std::cout << "Enter Number" << endl; std::getline(cin,pPrim); int res = findPrim(2, pPrim); if(res == -1) cout << pPrim << " is not a prime" << endl; else if(res == 0) cout << pPrim << " is a prime" << endl; else cout << pPrim << " is not a prime, it can be devided by "<< res << endl; } return 0; }wieso Oo
-
Erstens: #include<string> vergessen.
Zweitens: getline() gibt's nicht in einer long-Variante, sondern nur für char* (als Methode von istream) und std::string (als globale Funktion)

PS: Die Funktion findPrim() ist ja fast ein Fall für den obfucated C Contest

-
CStoll schrieb:
Erstens: #include<string> vergessen.
Zweitens: getline() gibt's nicht in einer long-Variante, sondern nur für char* (als Methode von istream) und std::string (als globale Funktion)

PS: Die Funktion findPrim() ist ja fast ein Fall für den obfucated C Contest

xD

jau ok danke ...
aber ich hab noch ein kleines problem...
wenn ichs jetzt so mache:while(1) { std::cout << "Enter Number" << endl; std::cin >> pPrim; res = findPrim(2, pPrim); if(res == -1) cout << pPrim << " is not a prime" << endl; else if(res == 0) cout << pPrim << " is a prime" << endl; else cout << pPrim << " is not a prime, it can be devided by "<< res << endl; std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); } return 0;dann wird der eingabepuffer manchmal scheinbar nicht gelöscht

sprich, ich gebe ne zahl ein und er gibt mir die antwort für ne zahl, die ich vorher eingegeben hatte...
-
pixartist schrieb:
CStoll schrieb:
PS: Die Funktion findPrim() ist ja fast ein Fall für den obfucated C Contest

jau ok danke ...
Ob das als Lob gemeint war? … wozu diese komische und unnütze Variable 'ret'?
int findPrim(long at, long n) { return n == 2 ? 2 : n < 2 ? -1 : at > sqrt(n + 1) ? 0 : n % at == 0 ? at : findPrim(at + 1, n); }(Jaja, mir ist schon klar, dass es dadurch nicht besser wird. Na doch: ein bisschen.)
-
ja aber kann mir denn keiner wegen dem eingabepuffer helfen ?
-
Wenn du drei Zahlen eingibst und nur eine davon liest, bleiben die übrigen beiden im Eingabepuffer stehen. Die kannst du entweder beim nächsten Schleifendurchlauf bearbeiten oder mittels ignore() kompostieren lassen.