Menu
Coddy logo textTech

Conversion de chaînes

Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 71 sur 75.

Pour convertir un type numérique en une chaîne de caractères, vous pouvez utiliser la méthode to_string(). Cette méthode est disponible pour la plupart des types de données, y compris les entiers et les nombres à virgule flottante.

Par exemple :

let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);

Dans cet exemple, nous convertissons une variable i32 nommée number en une String.

Pour convertir une chaîne de caractères en un type numérique, vous pouvez utiliser la méthode parse(). Cette méthode renvoie un résultat qui contient soit le nombre analysé, soit une erreur si la conversion échoue.

Par exemple :

let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);

Dans cet exemple, nous convertissons une chaîne de caractères number_str en un i32 en utilisant la méthode parse(). La méthode unwrap() est utilisée pour extraire la valeur du Result, en supposant que la conversion soit réussie.

Si la conversion échoue, le programme va paniquer (échouer).

Vous pouvez également utiliser parse() avec différents types numériques :

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);

Dans ce cas, nous convertissons une chaîne de caractères float_str en un f64.

challenge icon

Défi

Facile

Créez une fonction nommée convert_and_print qui prend trois arguments :

  1. Une tranche de chaîne (string slice) s: &str — il s'agit d'un nombre écrit sous forme de texte (par exemple "123.67"). Il n'est utilisé que lorsque to_string est false.
  2. Un flottant n: f64 — un nombre à virgule flottante. Il n'est utilisé que lorsque to_string est true.
  3. Un booléen to_string: bool — détermine quelle opération effectuer.

La fonction doit effectuer les opérations suivantes :

  • Si to_string est true : convertissez n en chaîne de caractères à l'aide de .to_string(), puis comptez le nombre de chiffres qu'elle contient (ne comptez pas le point . ni le signe moins -). Imprimez au format :
    Number: [string], Digits: [num of digits]

    Par exemple, si n = -321.198623, sa forme textuelle est "-321.198623", qui possède 9 chiffres (sans compter - et .).

    Astuce : convertissez n en chaîne, puis utilisez .len() sur celle-ci et soustrayez 1 pour chaque . ou - qu'elle contient.
  • Si to_string est false : analysez la chaîne s en tant que f64 à l'aide de .parse(), puis convertissez-la (cast) en i32 (ce qui supprime la partie décimale). Imprimez au format :
    String as number: [number]

    Par exemple, si s = "123.67231", la sortie est String as number: 123.

Appelez convert_and_print deux fois :

  1. Premièrement, avec to_string défini sur false — cela utilise la chaîne s et ignore n.
  2. Deuxièmement, avec to_string défini sur true — cela utilise le nombre n et ignore s.

Aide-mémoire

Pour convertir un type numérique en chaîne de caractères, utilisez la méthode to_string() :

let number = 42;
let number_str = number.to_string();

Pour convertir une chaîne de caractères en un type numérique, utilisez la méthode parse() :

let number_str = "123";
let number: i32 = number_str.parse().unwrap();

La méthode parse() fonctionne avec différents types numériques :

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();

La méthode unwrap() extrait la valeur du Result. Si la conversion échoue, le programme s'arrêtera avec un message d'erreur (panic).

Essayez vous-même

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // Écrivez votre code ici
}

fn main() {
    let mut input_number_str = String::new();
    let mut input_n = String::new();

    io::stdin().read_line(&mut input_number_str).unwrap();
    io::stdin().read_line(&mut input_n).unwrap();

    let n: f64 = input_n.trim().parse().unwrap();
    let number_str = input_number_str.trim();

    // Appeler convert_and_print avec to_string = false
    
    
    // Appeler convert_and_print avec to_string = true
    
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fundamentals