769 Stimmen

Wie kann ich einen std::string in int umwandeln?

Ich möchte einen String in einen int konvertieren, und ich meine nicht ASCII-Codes.

Für einen schnellen Durchlauf wird uns eine Gleichung als String übergeben. Wir sollen sie aufschlüsseln, richtig formatieren und die linearen Gleichungen lösen. Ich bin nicht in der Lage, eine Zeichenkette in eine Zahl zu konvertieren.

Ich weiß, dass die Zeichenfolge entweder im Format (-5) oder (25) usw. sein wird, also ist es definitiv ein int. Aber wie extrahieren wir das aus einem String?

Eine Möglichkeit, die ich dachte, ist das Ausführen einer for/while-Schleife durch die Zeichenfolge, überprüfen Sie für eine Ziffer, extrahieren Sie alle Ziffern nach, dass und dann zu sehen, wenn es eine führende '-', wenn es ist, multiplizieren Sie die int mit -1.

Für ein so kleines Problem scheint es allerdings etwas zu kompliziert zu sein. Irgendwelche Ideen?

0voto

Gonçalo Garrido Punkte 108

Mein Code:

#include <iostream>
using namespace std;

int main()
{
    string s="32";  //String
    int n=stoi(s);  //Convert to int
    cout << n + 1 << endl;

    return 0;
}

0voto

Amey Kudari Punkte 1
ll toll(string a){
    ll ret=0;
    bool minus=false;
    for(auto i:a){
        if(i=='-'){ minus=true; continue; }
        ret*=10;
        ret+=(i-'0');
    } if(minus) ret*=-1;
    return ret;
    # ll is defined as, #define ll long long int
    # usage: ll a = toll(string("-1234"));
}

0voto

Bala Singh Punkte 1

Zur Konvertierung von der String-Darstellung in einen Integer-Wert können wir std::stringstream verwenden.

Wenn der umgewandelte Wert außerhalb des Bereichs für den Ganzzahl-Datentyp liegt, wird INT_MIN oder INT_MAX zurückgegeben.

Auch wenn der String-Wert nicht als gültiger int-Datentyp dargestellt werden kann, wird 0 zurückgegeben.

#include 
#include 
#include 

int main() {

    std::string x = "50";
    int y;
    std::istringstream(x) >> y;
    std::cout << y << '\n';
    return 0;
}

Leistung: 50

Aus der obigen Ausgabe geht hervor, dass sie von Zeichenketten in Ganzzahlen umgewandelt wurde.

Quelle und mehr unter string zu int c++

0voto

Blazej Kita Punkte 11
 int stringToInt(std::string value) {    
 if(value.length() == 0 ) return 0; //tu zmiana..

 if (value.find(  std::string("NULL") ) != std::string::npos) {
     return 0;
  }

  if (value.find(  std::string("null") ) != std::string::npos) {
     return 0;
  }

int i;
std::stringstream stream1;
stream1.clear();
stream1.str(value);
stream1 >> i;
return i;

};

0voto

Eric Punkte 5681

atoi ist eine eingebaute Funktion, die eine Zeichenkette in eine ganze Zahl umwandelt, wobei vorausgesetzt wird, dass die Zeichenkette mit einer ganzzahligen Darstellung beginnt.

http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X