如何将整数转换为字符串?

171

我无法编译将整数转换为字符串类型的代码。我正在运行来自Rust for Rubyists教程 的示例,其中包含各种类型转换,例如:

"Fizz".to_str()num.to_str()(其中num是一个整数)。

我认为这些to_str()函数调用中的大部分(如果不是全部)已被弃用。如何将整数转换为字符串?

我得到了以下错误:

error: type `&'static str` does not implement any method in scope named `to_str`
error: type `int` does not implement any method in scope named `to_str`

抱歉如果我没有理解正确,但我已经尝试查找int源代码,它似乎使用http://doc.rust-lang.org/0.11.0/std/num/strconv/index.html,但这只返回一个字节向量。此外还有`to_string()`方法,但它返回的是`String`而不是字面字符串。 - user3358302
哈哈,不用在意,我以为 to_str() 返回的是不同的值,我会使用 to_string() - user3358302
1
@user3358302,除非它们返回静态已知的字面值,否则没有任何方法可以返回您所称呼的“字面字符串”。因为这些值具有类型&'static str,即带有静态生命周期的字符串切片,使用动态创建的数据无法获得。你只能使用字符串字面值来创建它们。 - Vladimir Matveev
好的,我知道了!我认为to_str方法让我感到困惑(正如你所说,他们为了清晰度而重命名),我以为它返回的是一个字符串切片,而不是一个String对象。 - user3358302
1个回答

235

使用to_string()方法(示例运行在这里):

let x: u32 = 10;
let s: String = x.to_string();
println!("{}", s);

在 Rust 1.0 发布之前,为了保持一致性,to_str() 被重命名为 to_string(),因为现在分配的字符串被称为String

如果您需要在某个地方传递字符串切片,则需要从 String 中获取一个 &str 引用。这可以使用 & 和解引用强制转换来完成:

let ss: &str = &s;   // specifying type is necessary for deref coercion to fire
let ss = &s[..];     // alternatively, use slicing syntax

你链接的教程似乎已经过时了。如果你对 Rust 中的字符串感兴趣,可以阅读The Rust Programming Language字符串章节


1
非常感谢,这解决了很多问题 :) 另外,我会阅读那个教程,因为字符串转换似乎仍在 Rust 上发生变化。 - user3358302

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接