如何将字符串写入文件?

tur*_*tle 2 rust

我想弄清楚如何将字符串写入文件。以下给了我错误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);
}
Run Code Online (Sandbox Code Playgroud)

如何从字符串变量写入文件?如果我更改以下行,它会起作用,但如果字符串在变量中,我无法弄清楚如何写入文件。

write!(output, "foo,bar,baz");
Run Code Online (Sandbox Code Playgroud)

har*_*mic 8

write!是一个宏,类似于print!. 它需要 2 个或更多参数,第一个是作者,第二个是格式字符串(必须是字符串文字),然后是零个或多个表达式,这些表达式将放置在格式字符串的占位符中。

所以,你可以像这样组合你的最后两行:

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

写入 Writer 的其他方法包括调用std::io::Write::write_all,或者直接将切片写入文件,您可以使用std::fs::write

另一件要注意的事情:print!宏不会以字符串形式返回输出,而是将输出打印到stdout. 如果要在字符串中获取格式化结果,请使用format!宏:

let my_string = format!("Hello {}", "world");
Run Code Online (Sandbox Code Playgroud)