작은 프로그램을 실현하기 위해 녹 프로그래밍에 들어가고 있으며 문자열 변환에서 약간 분실했습니다.Vec <u16> 또는 Vec <WCHAR>을 & str으로 변환
let mut name: Vec<winnt::WCHAR> = Vec::new();
WCHAR
내 Windows 시스템에 u16
과 동일 다음과 같이 내 프로그램에서
, 내가 벡터를 가지고있다.
저는 Vec<u16>
을 포인터로 사용하여 데이터로 채 웁니다. 그런 다음 벡터에 포함 된 문자열을 &str
으로 변환해야합니다. 그러나 아무리 노력해도이 변환 작업을 관리 할 수 없습니다.
widestr = unsafe { WideCString::from_ptr_str(name.as_ptr()) };
그러나 이것은 잘못된 방향으로 단계가 될 것 같다 :
내가 작업을 얻을 수 있었다있는 유일한 방법은 WideString
로 변환하는 것입니다.
Vec<u16>
을 &str
으로 변환하는 가장 좋은 방법은 벡터에 유효하고 Null로 끝나는 문자열이 들어 있다고 가정합니다.
나를 도와 주셔서 고맙습니다. 분명히 완전히 잃어 버렸고 어떻게 든 두 가지 유형의 인코딩이 동일하다고 가정했습니다. 이 컨텍스트에서이 변환을 위해 다른 String 객체 (실제로 녹슬지 않는 객체라고도 함)를 사용하는 것이 합리적입니다. – Norbert
@Norbert : 나는 물건을 객체 호출 여부에 대해 숙고하고 있는지 여부를 확신하지 못합니다. 모두가 방금 그 용어를 이해하므로 충분히 좋습니다 :) –
@Norbert 예, 나는 그것이 당신이 "객체"라고 부르는 것에 달려 있다고 생각합니다. 데이터의 덩어리와 관련 메소드를 의미한다면, 그것은 객체입니다. 나는 보통 "클래스"대신에 "타입"을 말한 다음 "타입의 인스턴스"라고 말할 것이라고 생각합니다. 나는 종종 "대상"을 말할 필요가있는 자신을 발견하지 못했습니다. 나는 모두가 너를 잘 이해할 것이라고 생각한다. – Shepmaster