2016-10-21 5 views
0

Ich habe ein Problem, weil ich String-Eingabe habe und ich es in Dezimal konvertieren möchten.C++ binäre in Dezimal von String-Eingabe konvertieren

Hier ist mein Code:

#include <iostream> 
#include <string> 
#include <stdlib.h> 

using namespace std; 

string inputChecker; 
int penghitung =0; 

int main(){ 
    string source = "10010101001011110101010001"; 

    cout <<"Program Brute Force \n"; 
    cout << "Masukkan inputan : "; 
    cin >> inputChecker; 

    int pos =inputChecker.size(); 
    for (int i=0;i<source.size();i++){ 
     if (source.substr(i,pos)==inputChecker){ 
      penghitung +=1; 
     } 
    } 
    if (source.find(inputChecker) != string::npos) 
     cout <<"\nData " << inputChecker << " ada pada source\n"; 
    else 
     cout <<"\nData "<< inputChecker <<" tidak ada pada source\n"; 

    cout <<"\nTotal kombinasi yang ada pada source data adalah " <<penghitung <<"\n"; 
    cout <<"\nDetected karakter adalah " <<inputChecker; 
    cout <<"\nThe Decimal is :" <<inputChecker; 
} 

ich die letzten machen will, die „Dezimal“ zeigen konvertieren inputChecker von binär in dezimal. Gibt es irgendeine Funktion, um in C++ leicht von binär zu dezimal zu konvertieren?

Dank im Voraus :))

+0

Verwenden Sie 'std :: bitset'. –

+0

Dieser Beitrag kann Ihnen helfen: http://stackoverflow.com/questions/16043377/conversion-of-string-to-decimal – asantacreu

Antwort

1

Verwenden std::strtol mit 2 als Basis. Zum Beispiel

auto result = std::strtol(source.c_str(), nullptr, 2); 
+0

es sagt Ergebnis nicht einen Typ Sir nennen –

+0

Dann verwenden Sie nicht C++ 11. Sie könnten 'long' anstelle von' auto' verwenden. –

+0

Jetzt sagt es nullptr nicht deklarieren. Was sollte ich verwenden? –

0

für Brute-Force:

static const std::string text_value("10010101001011110101010001"); 
const unsigned int length = text_value.length(); 
unsigned long numeric_value = 0; 
for (unsigned int i = 0; i < length; ++i) 
{ 
    value <<= 1; 
    value |= text_value[i] - '0'; 
} 

Der Wert verschoben wird, oder mit 2 multipliziert, dann wird die Ziffer zu der akkumulierten Summe addiert.

Ähnlich wie beim Konvertieren dezimaler Textstellen in interne Darstellung.

Verwandte Themen