1/* 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11#import "NSString+StdString.h" 12 13#include "absl/strings/string_view.h" 14 15@implementation NSString (StdString) 16 17- (std::string)stdString { 18 return [NSString stdStringForString:self]; 19} 20 21+ (std::string)stdStringForString:(NSString *)nsString { 22 NSData *charData = [nsString dataUsingEncoding:NSUTF8StringEncoding]; 23 return std::string(reinterpret_cast<const char *>(charData.bytes), 24 charData.length); 25} 26 27+ (NSString *)stringForStdString:(const std::string&)stdString { 28 // std::string may contain null termination character so we construct 29 // using length. 30 return [[NSString alloc] initWithBytes:stdString.data() 31 length:stdString.length() 32 encoding:NSUTF8StringEncoding]; 33} 34 35@end 36 37@implementation NSString (AbslStringView) 38 39+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView { 40 return [[NSString alloc] initWithBytes:abslStringView.data() 41 length:abslStringView.length() 42 encoding:NSUTF8StringEncoding]; 43} 44 45@end 46