rust 如何将字符串写入文件?

xyhw6mcr  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(190)

我正在尝试弄清楚如何将字符串写入文件。下面给出了错误format argument must be a string literal

use std::fs::File;
use std::io::{Error, Write};

fn main() -> Result<(), Error> {
    let path = "results.txt";
    let mut output = File::create(path)?;
    let line = println!("{}", "hello");
    write!(output, line);
}

如何从一个字符串变量写入一个文件?如果我改变了下面的行,它可以工作,但我不知道如何写入一个文件,如果字符串是在一个变量。

write!(output, "foo,bar,baz");
k5hmc34c

k5hmc34c1#

write!是一个宏,类似于print!。它需要2个或更多的参数,第一个是写入器,第二个是格式字符串(必须是字符串文字),然后是零个或更多的表达式,这些表达式将被放置在格式字符串的占位符中。
因此,您可以将最后两行合并为:

fn main() -> std::io::Result<()> {
    let path = "results.txt";
    let mut output = File::create(path)?;
    let line = "hello";
    write!(output, "{}", line)
}

其他写入Writer的方法包括调用std::io::Write::write_all,或者直接将切片写入文件,您可以使用std::fs::write
另一件需要注意的事情是:print!宏不会返回字符串形式的输出,而是将输出打印到stdout。如果要获得字符串形式的格式化结果,请使用format!宏:

let my_string = format!("Hello {}", "world");

相关问题