Menu
Coddy logo textTech

Conversão de Strings

Parte da seção Fundamentals do Journey de Rust da Coddy. Lição 71 de 75.

Para converter um tipo numérico em uma string, você pode usar o método to_string(). Este método está disponível para a maioria dos tipos de dados, incluindo números inteiros e de ponto flutuante.

Por exemplo:

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

Neste exemplo, estamos convertendo uma variável i32 chamada number para uma String.

Para converter uma string em um tipo numérico, você pode usar o método parse(). Este método retorna um resultado que contém o número analisado ou um erro se a conversão falhar.

Por exemplo:

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

Neste exemplo, estamos convertendo uma string number_str para um i32 usando o método parse(). O método unwrap() é usado para extrair o valor do Result, assumindo que a conversão seja bem-sucedida.

Se a conversão falhar, o programa entrará em pânico (falhará).

Você também pode usar parse() com diferentes tipos numéricos:

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

Neste caso, estamos convertendo uma string float_str para um f64.

challenge icon

Desafio

Fácil

Crie uma função chamada convert_and_print que recebe três argumentos:

  1. Um slice de string s: &str — este é um número escrito como texto (ex: "123.67"). Ele só é usado quando to_string é false.
  2. Um float n: f64 — um número de ponto flutuante. Ele só é usado quando to_string é true.
  3. Um booleano to_string: bool — determina qual operação realizar.

A função deve realizar as seguintes operações:

  • Se to_string for true: converta n para uma string usando .to_string(), então conte quantos caracteres de dígitos ela contém (não conte o ponto . ou o sinal de menos -). Imprima no formato:
    Number: [string], Digits: [num of digits]

    Por exemplo, se n = -321.198623, sua forma em string é "-321.198623", que possui 9 caracteres de dígitos (sem contar - e .).

    Dica: converta n para uma string, use .len() nela e subtraia 1 para cada . ou - que ela contiver.
  • Se to_string for false: faça o parse da string s como um f64 usando .parse(), então converta-o para i32 (o que descarta a parte decimal). Imprima no formato:
    String as number: [number]

    Por exemplo, se s = "123.67231", a saída é String as number: 123.

Chame convert_and_print duas vezes:

  1. Primeiro, com to_string definido como false — isso usa a string s e ignora n.
  2. Segundo, com to_string definido como true — isso usa o número n e ignora s.

Experimente você mesmo

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // Escreva seu código aqui
}

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

    // Chame convert_and_print com to_string = false
    
    
    // Chame convert_and_print com to_string = true
    
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentals

Pratique por conta própria: Compilador de Rust online