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.


Anmelden zum Antworten