정수에서 문자열로 어떻게 변환합니까?


87

유형을 정수에서 문자열로 변환하는 코드를 컴파일 할 수 없습니다. 다음 과 같은 다양한 유형 변환이 있는 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 소스를 찾아 보았고 doc.rust-lang.org/0.11.0/std/num/strconv/index.html 을 사용하는 것 같지만 이것은 바이트 벡터를 반환합니다 . 또한 to_string()메서드가 있지만 String리터럴 문자열이 아닌 반환 합니다.
user3358302 jul.

신경 끄시 고 하하, 나는 생각했다 to_str()다른 반환 값은, 내가 사용합니다되었다to_string()
user3358302

1
@ user3358302, 정적으로 알려진 리터럴을 반환하지 않는 한 어떤 메서드도 "리터럴 문자열"이라고 부르는 것을 반환 할 수 없습니다. 이러한 값은 &'static str동적으로 생성 된 데이터를 사용하여 얻을 수없는 정적 수명이있는 문자열 슬라이스 유형을 갖기 때문 입니다. 문자열 리터럴을 사용해서 만 만들 수 있습니다.
Vladimir Matveev

알아 둘만 한! 나는 그 방법 to_strString객체 대신 문자열 슬라이스를 반환 한다고 생각하면서 (당신이 말했듯이 명확성을 위해 이름이 바뀐) 혼란 스러웠다 고 생각 합니다.
user3358302 jul.

답변:


122

사용 to_string()( 여기에서 예제 실행 ) :

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

네가 옳아; 할당 된 문자열이 이제라고 부르기 때문에 일관성을 위해 Rust 1.0이 출시되기 전 to_str()으로 이름이 변경되었습니다 .to_string()String

어딘가에 문자열 슬라이스를 전달해야하는 경우에서 &str참조 를 가져와야합니다 String. 이는 &및 deref 강제를 사용하여 수행 할 수 있습니다 .

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
많은 사람에게 감사합니다. 이것은 일을 정리합니다. :) 또한 문자열 변환이 여전히 녹슬지 않는 것처럼 보이기 때문에 튜토리얼을 진행할 것입니다.
user3358302 jul.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.