Menu
CoddyTech

Conversion de chaînes

Fait partie de la section Fondamentaux du Journey Rust de Coddy. Leçon 71 sur 75.

Pour convertir un type numérique en chaîne de caractères, tu peux 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 number en String.

Pour convertir une chaîne en un type numérique, tu peux 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 i32 à l’aide de la méthode parse(). La méthode unwrap() sert à extraire la valeur de Result, en supposant que la conversion réussit.

Si la conversion échoue, le programme paniquera (échouera).

Tu peux aussi 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 float_str en f64.

challenge icon

Défi

Facile

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

  1. Une tranche de chaîne s: &str. Il s’agit d’un nombre écrit sous forme de texte (par ex. "123.67"). Elle est utilisée uniquement lorsque to_string vaut false.
  2. Un nombre à virgule flottante n: f64 : un nombre à virgule flottante. Il est utilisé uniquement lorsque to_string vaut 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 vaut true : convertis n en chaîne à l’aide de .to_string(), puis compte le nombre de caractères chiffres qu’elle contient (ne compte pas le point . ni le signe moins -). Affiche au format :
    Number: [string], Digits: [num of digits]

    Par exemple, si n = -321.198623, sa représentation sous forme de chaîne est "-321.198623", qui contient 9 caractères chiffres (sans compter - et .).

    Conseil : convertis n en chaîne, puis utilise .len() dessus et soustrais 1 pour chaque . ou - qu’elle contient.
  • Si to_string vaut false : analyse la chaîne s comme un f64 à l’aide de .parse(), puis convertis-la en i32 (ce qui supprime la partie décimale). Affiche au format :
    String as number: [number]

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

Appelle convert_and_print deux fois :

  1. D’abord, avec to_string défini sur false. Cela utilise la chaîne s et ignore n.
  2. Ensuite, avec to_string défini sur true. Cela utilise le nombre n et ignore s.

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();

    // Appelez convert_and_print avec to_string = false
    
    
    // Appelez 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 Fondamentaux

Entraînez-vous par vous-même : Compilateur Rust en ligne