NSString을 std :: string으로 어떻게 변환합니까?
나는 NSString
개체가 있고 그것을 std::string
.
Objective-C ++에서 어떻게합니까?
NSString *foo = @"Foo";
std::string bar = std::string([foo UTF8String]);
편집 : 몇 년 후이 답변을 확장하겠습니다. 정당하게 지적했듯이 .NET을 사용하려는 경우 cStringUsingEncoding:
with 를 사용하고 싶을 NSASCIIStringEncoding
것 std::string
입니다. normal과 함께 UTF-8을 사용할 수 std::strings
있지만 문자 또는 문자가 아닌 바이트에서 작동합니다. 좋은 "시작"을 위해이 질문과 답변을 확인하십시오 .
또한 ASCII로 표현할 수없는 문자열이 있지만 여전히에서 원하고 std::string
ASCII가 아닌 문자를 원하지 않는 경우 손실 인코딩 된 ASCII로 문자열 dataUsingEncoding:allowLossyConversion:
의 NSData
표현 을 얻는 데 사용할 수 있습니다. 콘텐츠, 그리고 당신의std::string
Ynau가 주석에서 제안했듯이, 일반적으로 힙 대신 스택에 모든 것을 유지하는 것이 좋습니다 (사용하여 힙 new
에 문자열 생성). 따라서 (UTF8 인코딩 가정) :
NSString *foo = @"Foo";
std::string bar([foo UTF8String]);
philjordan.eu에서 언급했듯이 NSString이 nil
. 이러한 경우 캐스트는 다음과 같이 수행되어야합니다.
// 참고 : foo가 nil이면 빈 C ++ 문자열이 생성됩니다.
// UTF8String에서 NULL 포인터를 역 참조하는 대신.
이것은 다음과 같은 전환으로 이어질 것입니다.
NSString *foo = @"Foo";
std::string bar = std::string([foo UTF8String], [foo lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
참고 URL : https://stackoverflow.com/questions/8001677/how-do-i-convert-a-nsstring-into-a-stdstring
'code' 카테고리의 다른 글
사육사는 Kafka의 필수품입니까? (0) | 2020.09.03 |
---|---|
AWS의 모든 리소스를 나열하는 방법이 있습니까? (0) | 2020.09.03 |
오버플로 스크롤 CSS가 div에서 작동하지 않습니다. (0) | 2020.09.03 |
포커스가있는 콘텐츠 편집 가능 사전 주변의 테두리를 제거하려면 어떻게합니까? (0) | 2020.09.03 |
좋은 파이썬 트리 데이터 구조를 찾고 있습니다. (0) | 2020.09.03 |