/* * Copyright 2015 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #import "NSString+StdString.h" #include "absl/strings/string_view.h" @implementation NSString (StdString) - (std::string)stdString { return [NSString stdStringForString:self]; } + (std::string)stdStringForString:(NSString *)nsString { NSData *charData = [nsString dataUsingEncoding:NSUTF8StringEncoding]; return std::string(reinterpret_cast(charData.bytes), charData.length); } + (NSString *)stringForStdString:(const std::string&)stdString { // std::string may contain null termination character so we construct // using length. return [[NSString alloc] initWithBytes:stdString.data() length:stdString.length() encoding:NSUTF8StringEncoding]; } @end @implementation NSString (AbslStringView) + (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView { return [[NSString alloc] initWithBytes:abslStringView.data() length:abslStringView.length() encoding:NSUTF8StringEncoding]; } @end