string & Binär



  • Hey Leute wir haben die Aufgabe eine IP (beliebige Zahl eingeben) in 4 variablen auf zu teilen die dann in binär umzu wandeln und zusammen als große binär zahl ausgeben.

    ja, gut das habe ich hinbekommen, nur mich hat es genervt die ganze ip selbst zu teilen ( 4 mal cin zu machen) deswegen habe ich mir die strings mal angeschaut und habe alles in einen gespeichert. dann hab ich sie mit substr aufgeteilt und somit mehr komfort für den user geschaffen ;).

    nun das Problem das meine funktion damit ich binär anzeigen kann, mein compiler sagt:

    Binärer Operator '>>': 'std::string' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht
    

    und ja mit integer hatte das geklappt, nun aber da ich dem komfort beiwohnen will, muss ich irgend eine alternative finden. hat jemand eine Idee?

    #include <iostream>
    #include <string>
    using namespace std;
    
    void IP_to_binary()
    {
    	string ip_norm;
    	string ip_norm_split[4];
    	string ip_binary[4];
    	getline(cin,ip_norm,'\n');
    	ip_norm_split[0]= ip_norm.substr(0,3);
    	ip_norm_split[1]= ip_norm.substr(3,3);
    	ip_norm_split[2]= ip_norm.substr(6,3);
    	ip_norm_split[3]= ip_norm.substr(9,3);
    	//cout << ip_norm_split[3];
    
    	for(int i = 0; i<=8; i++)
    	{
    		for(int u = 0; u<=4; u++)
    		{
    			ip_binary[u]=((ip_norm_split[u]>>i&1));
    			cout << ip_binary[u];
    		}
    	}
    }
    
    int main()
    {
    	IP_to_binary();
    	cin.get();
    	cin.get();
    	return 0;
    
    }
    

    lieben Gruß DFZ



  • shiften mit >> geht nicht auf strings. das geht nur auf integers.

    Ich habe es mal geändert, indem ich gleich int eingelesen habe.

    #include <iostream>
    #include <string>
    using namespace std;
    
    void IP_to_binary()
    {
        int ip_norm_split[4];
        char dummy;
        cin>>ip_norm_split[0]>>dummy>>
            ip_norm_split[1]>>dummy>>
            ip_norm_split[2]>>dummy>>
            ip_norm_split[3];
        string ip_binary[4];
    
        for(int u = 0; u<4; u++)
        {
            for(int i = 7; i>=0; i--)
            {
                ip_binary[u]+='0'+((ip_norm_split[u]>>i)&1);
            }
            cout << ip_binary[u] << ' ';
        }
    }
    
    int main()
    {
        IP_to_binary();
        cin.get();
        cin.get();
        return 0;
    
    }
    

Anmelden zum Antworten