我正在尝试弄清楚如何将字符串写入文件。下面给出了错误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");
1条答案
按热度按时间k5hmc34c1#
write!
是一个宏,类似于print!
。它需要2个或更多的参数,第一个是写入器,第二个是格式字符串(必须是字符串文字),然后是零个或更多的表达式,这些表达式将被放置在格式字符串的占位符中。因此,您可以将最后两行合并为:
其他写入Writer的方法包括调用
std::io::Write::write_all
,或者直接将切片写入文件,您可以使用std::fs::write
。另一件需要注意的事情是:
print!
宏不会返回字符串形式的输出,而是将输出打印到stdout
。如果要获得字符串形式的格式化结果,请使用format!
宏: