답변
MSDN은 데이터를 마샬링하는 방법에 대해 자세히 설명합니다. 또한 msclr::marshal_as
w.r.t에 대한 표준 구현을 제공합니다. std::string
.
cli::array
은 좀 더 복잡합니다. 일반적인 경우의 핵심은 배열 pin
입니다 (따라서 우리는 뒤에서 움직이지 않습니다). String^
변환의 경우 marshal_as
은 pin
String
이 적합합니다.
코드의 요점은 다음과 같습니다
vector<string> marshal_array(cli::array<String^>^ const& src)
{
vector<std::string> result(src->Length);
if (src->Length) {
cli::pin_ptr<String^> pinned = &src[0]; // general case
for (int i = 0; i < src->Length; ++i) {
result[static_cast<size_t>(i)] = marshal_as<string>(src[i]);
}
}
return result;
}
왜 src 배열을 고정해야합니까? –
@AlexFarber 코드는 원래 배열의 형식에 맞게 템플릿 화되었으므로 일부 형식이 알려지지 않았고 코드에서 변환 중에 이동하지 않았 음을 확인해야했습니다. 이 경우 marshal_as가 사용되므로이 경우 엄격하게 필요하지 않을 수도 있습니다. 다시 점검해야합니다. 관리 대상에서 비 관리 대상으로 변환하려면 데이터를 복사하는 동안 관리 대상 개체를 메모리에서 이동하지 않아야합니다. – Niall
고정은 여기서 필요하지 않습니다.이 코드는 String 배열의 일반적인 열거를 만듭니다. 더러운 모든 작업은 문자열을 내부적으로 고정하는 marshal_as에 의해 식사됩니다. –
- 1. 변환 문자열 배열
- 2. matlab에 문자열 변환 배열
- 3. 변환 문자열 배열은 내가 만든 배열 배열
- 4. 배열 및 문자열 변환 오류
- 5. PHP 문자열 배열 변환 오류
- 6. 문자열/배열 형식으로 변환 PHP
- 7. 문자열 변환 php, assoc 배열
- 8. 문자열 변환 DOM 파서에 배열
- 9. 배열 문자열 객체를 float로 변환
- 10. 변환 배열
- 11. PHP Notice : 배열 10 행의 문자열 변환
- 12. 공지 사항 : 문자열 변환 PHP에 배열
- 13. 변환 플랫폼 :: 배열 <byte> 문자열
- 14. 혼합 배열로 변환 할 문자열 배열
- 15. 문자열 변환 문제에 대한 연관 배열
- 16. Codeigniter 배열 대 문자열 변환 오류
- 17. 변환 쿼리 문자열 배열 매개 변수는
- 18. Magento 로그의 문자열 변환 오류에 대한 배열
- 19. 맞춤 배열 객체를 문자열 배열로 변환
- 20. cakephp 쿠키의 문자열 변환 오류에 대한 배열
- 21. SQLite에서 정수 배열로 문자열 배열 변환
- 22. 문자열 변환 오류 배열 행 11
- 23. groovy 배열 합계 (문자열 변환 포함)
- 24. 변환 문자열 배열은 배열 (제네릭?) int로
- 25. 이동 : 문자열 배열을 Json 배열 문자열로 변환
- 26. 변환 문자열
- 27. 변환 바이트 배열 -> 문자열 -> 바이트 배열 데이터를 손상
- 28. java - 더 큰 크기의 문자열 배열로 문자열 배열 변환
- 29. 문자열 배열에 배열 형식의 문자열 입력을 변환 효율적으로
- 30. PHP 변환 문자열
당신은 또한 스레드 로케일의 문자 세트 및 인코딩에 유니 코드 문자 세트로 변환 하시겠습니까 (코드가 실행될 때)? 그렇게 생각하지 않는 것이 일반적인 경우 일 수 있습니다. 그러나 데이터가 NTFS 파일 이름 (예 :) 인 경우 유니 코드로 보관해야합니다. –