497 Stimmen

Wandeln Sie einen String in eine Ganzzahl um?

Hinweis: Diese Frage enthält veralteten Code vor Version 1.0! Die Antwort ist jedoch korrekt.

Um eine str in ein int in Rust umzuwandeln, kann ich dies tun:

let my_int = from_str::(my_str);

Der einzige Weg, den ich kenne, um eine String in ein int umzuwandeln, besteht darin, einen Teil davon zu bekommen und dann from_str wie folgt zu verwenden:

let my_int = from_str::(my_string.as_slice());

Gibt es eine Möglichkeit, eine String direkt in ein int umzuwandeln?

10voto

Karthik Cherukuri Punkte 603

Sie können die FromStr-Trait-Methode from_str verwenden, die für i32 implementiert ist:

let my_num = i32::from_str("9").unwrap_or(0);

3voto

Vladimir Matveev Punkte 111699

Nun, nein. Warum sollte es? Verwerfen Sie einfach den String, wenn Sie ihn nicht mehr benötigen.

&str ist nützlicher als String, wenn Sie nur einen String lesen müssen, da es nur eine Ansicht in die Originaldaten ist, nicht der Eigentümer. Sie können es leichter herumreichen als String und es ist kopierbar, sodass es nicht von den aufgerufenen Methoden verbraucht wird. In dieser Hinsicht ist es allgemeiner: Wenn Sie einen String haben, können Sie ihn dort übergeben, wo ein &str erwartet wird. Aber wenn Sie einen &str haben, können Sie ihn nur an Funktionen übergeben, die String erwarten, wenn Sie eine neue Zuweisung machen.

Weitere Informationen zu den Unterschieden zwischen diesen beiden und wann sie zu verwenden sind, finden Sie im offiziellen Strings-Leitfaden.

1voto

Taimoor Punkte 81

Also möchtest du im Grunde genommen einen String in eine Ganzzahl umwandeln, richtig! Hier ist, was ich meistens benutze und was auch in der offiziellen Dokumentation erwähnt wird.

fn main() {

    let char = "23";
    let char : i32 = char.trim().parse().unwrap();
    println!("{}", char + 1);

}

Dies funktioniert sowohl für String als auch für &str Hoffentlich hilft dir das auch weiter.

0voto

Jatin Manoj Punkte 11

Als Ergänzung zu anderen Antworten ist die Verwendung von unwrap_or eine weitere Option für schnelles Fehlerhandling

let my_string = "42";
let my_int = my_string.parse::().unwrap_or(0);

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