Menu
Coddy logo textTech

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, vous pouvez utiliser la méthode to_string(). Cette méthode est disponible pour la plupart des types de données, notamment 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 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 number_str en i32 à l’aide de la méthode parse(). La méthode unwrap() est utilisée pour extraire la valeur de Result, en supposant que la conversion réussit.

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

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

challenge icon

Défi

Facile

Créez une fonction nommée convert_and_print qui accepte 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 flottant 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 : convertissez n en chaîne à l’aide de .to_string(), puis comptez le nombre de caractères numériques qu’elle contient (ne comptez pas le point . ni le signe moins -). Affichez le résultat au format suivant :
    Number: [string], Digits: [num of digits]

    Par exemple, si n = -321.198623, sa forme textuelle est "-321.198623", qui contient 9 caractères numériques (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 vaut false : analysez la chaîne s comme un f64 à l’aide de .parse(), puis convertissez-la en i32 (ce qui supprime la partie décimale). Affichez le résultat au format suivant :
    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.

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