首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Rodio机箱找不到文件

使用Rodio机箱找不到文件
EN

Stack Overflow用户
提问于 2021-06-24 04:53:30
回答 1查看 46关注 0票数 0

我尝试以字符串的形式从用户获取输入,并将其作为Rodio播放音频文件的路径传递。当我传递给它一个硬编码的路径时,它似乎工作得很好,但是当我输入相同的路径作为输入时,它会给我一个错误。

代码:

代码语言:javascript
复制
fn main() {

    let mut path = String::new();
    io::stdin().read_line(&mut path); //to get input from the user

    player(&path);
}
代码语言:javascript
复制
fn player(path: &str){
    let (stream, stream_handle) = rodio::OutputStream::try_default().unwrap();

    // Load a sound from a file, using a path relative to Cargo.toml
    let file = File::open(path).unwrap();
    let source = rodio::Decoder::new(BufReader::new(file)).unwrap();
    stream_handle.play_raw(source.convert_samples());

    // The sound plays in a separate audio thread,
    // so we need to keep the main thread alive while it's playing.
    loop {

    }
}

输入: C:\Users\username\AppData\Roaming\Equinotify\songs\Olivia Rodrigo - good 4 u(官方视频).wav

输入: C:\Users\Drago\AppData\Roaming\Equinotify\songs\Olivia Rodrigo - good 4 u(官方视频).wav

这两个输入在这种情况下都不起作用,并产生以下错误:

代码语言:javascript
复制
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 123, kind: Other, message: "The filename, directory name, or volume label syntax is incorrect." }', src\main.rs:24:33

然而,当我硬编码完全相同的输入时,它工作得很好。非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-24 08:28:27

当您从stdin读取一行时,它通常会在末尾包含新行(从按enter键时开始)。

如果您使用调试格式说明符打印字符串,即println!("{:?}",&path);,它将显示字符串中您在其他情况下看不到的任何转义序列。

您可能需要使用str::trim或类似的方法来删除换行符。-- Cormac O‘’Brien

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68106907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档