2016-03-20 6 views
-3

Ich habe eine std::string number = "55353" und ich möchte die Zahlen, die ich in dieser Zeichenfolge (5 und 3) verwendet habe extrahieren. Gibt es eine Funktion, das zu tun? Wenn ja, bitte sagen Sie mir seinen Namen, ich habe jetzt schon eine ganze Weile gesucht und haben es immer noch nicht gefunden ... UPD: ich gelöst habe mein Problem (ein bisschen)Wie man Zahlen extrahiert, die in einer Zeichenfolge verwendet werden?

std::string number(std::to_string(num)); 

std::string mas = "---------";    

int k = 0;         
for (int i = 0; i < number.size(); i++) { 
    char check = number[i];     
    for (int j = 0; j < mas.size(); j++) { 
     if (check == mas[j])     
      break;       
     if (check != mas[j] && check != mas[j+1]) { 
      mas[k] = check;     
      k++;        
      break;       
     }         
    }          
}           

mas.resize(k); mas.shrink_to_fit(); 

std::string mas enthält Zahlen, die in std::string number verwendet wurden. Dies ist eine Zahl, die unter Verwendung von std::to_string() in std::string konvertiert wurde.

+0

Nein, es gibt keine Standardfunktion dafür. Du musst es selbst schreiben. –

+0

Wie mache ich es dann? Ich habe so viel Zeug probiert, aber es wird einfach nicht funktionieren. Ich bin neu in C++, bitte helfen Sie mir. –

+0

Die beste Option, nicht mehr in C++ zu sein, ist zu lernen. Informationen zur Inspiration finden Sie in der ausführlichen C++ - Buchanleitung und -liste (http://stackoverflow.com/q/388242/1889329). – IInspectable

Antwort

-3

Check out sscanf:

Mit ihm können Sie formatierten Daten von String lesen.

+0

Wie geht das schon mal mit der Frage um? Das OP möchte keine formatierten Daten lesen. Das OP möchte verschiedene Ziffern in einer Zahl finden, die als String gespeichert sind. – IInspectable

0

Versuchen Sie folgendes:

std::string test_data= "55335"; 
char digit_to_delete = '5'; 
unsigned int position = test_data.find(); 
test_data.erase(position, 1); 
cout << "The changed string: " << test_data << "\n"; 

Der Algorithmus find ist die Zahl (als Zeichen) innerhalb der Zeichenfolge. Die Position wird dann verwendet, um erase die Ziffer in der Zeichenfolge.

0

Ihre Frage sieht wie Hausaufgaben aus, also kann ich raten, was Sie vergessen haben, uns zu erzählen.

mas beginnt mit zehn -. Wenn Sie eine 5 entdecken, sollten Sie den 6. (!) Strich durch einen '5' ersetzen. Dieses "6." ist nur ein Artefakt des Englischen. C++ beginnt bei null zu zählen, nicht bei eins. Die Position für Null ist mas[0], das erste Element des Arrays.

Das eine schwierige Bit ist zu verstehen, dass Zeichen in einer Zeichenfolge keine Zahlen sind. Die richtige Bezeichnung für sie ist "(Dezimal) Ziffern". Und um ihren numerischen Wert zu erhalten, müssen Sie '0' - das Zeichen Null subtrahieren. So '5' - '0' == 5 - das Zeichen fünf minus das Zeichen Null ist die Nummer 5.