Objc和 c++之间字符串的转换

31 篇文章 1 订阅
16 篇文章 1 订阅

一、oc和c++的混编;const char* to NSString

 

object c1 -------->   c++ ---------->  object c2;

 

1.object c1

object c1

NSString *s =@"ABC";
const char* destDir = [s UTF8String];

2、C++两种转换方法:

c++:
第一种:建议
char*  tempParam3 = (char *)pParam2; 
//tempParam3 output ABC

    //如果 char  tempParam3 = *(char *)pParam2;
    // tempParam3 output A

第二种:
std::string tempChar2 = *(string *)pParam2;
//tempChar2.c_str() output ABC

3、object c2

object c2 

如果C++文件是第一种:
NSString *tempstring = [NSString stringWithUTF8String:tempParam3.c_str()];


如果C++文件是第二种:
NSString *tempstring =[NSString stringWithUTF8String:tempChar2];

 

 

参考:https://blog.csdn.net/mango9126/article/details/70834209

 

https://www.cnblogs.com/tomblogblog/p/3719254.html

 

char tempChar = *(char *)pParam2;//只输出第一个字节A

char *tempChar = (char *)pParam2;//输出全部ABC


eg:
double d = 3.1416;
char ch = *(char *)&d;
cout<<ch<<endl;
char ch = *(char *)&d

1 double一般是8字节(32位和64位操作系统)
2 char是1个字节。

解释char ch = *(char *)&d;
1 &d : 就是取d的内存地址。换句话说是指向8个字节的类型指针。
2 (char *)&d,将该地址由double*转换为char*,指针类型转换为指向一个字节的类型指针。
3 *(char *)&d。取该指针(char*)的值,其实换句话说是取一个字节的内存数据,并赋予数据指针类型的类型。
4 char ch = *(char *)&d。就简单了。
总结:就是取double数d的第一个字节,并转换为char类型,赋值给ch。

https://blog.csdn.net/u010977122/article/details/53097113

 

[root@db-172-16-3-33 zzz]# cat b.c
#include <stdio.h>

int main() {
  char * a = "hello";
  fprintf(stdout, "&a:%p, a:%p, a:%s\n", &a, a, a);
  return 0;
}
结果 : 
[root@db-172-16-3-33 zzz]# gcc -O3 -Wall -Wextra -Werror -g ./b.c -o b && ./b
&a:0x7fff71b22230, a:0x400618, a:hello


&a 表示a的地址 . 
a 表示a存储的内容, 因为a是指针, 所以它的内容读取出来就是一个地址 . 
*a 表示a指针存储的这个地址 存储的内容 . 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值