C++ char[]、char*、const char*、string 相互转换

在写C++代码时,会经常用到char[]、char*、const char*、string 相互转换,现总结如下,供大家参考。

原类型目标类型转换代码
char[]char*char ch[] = "test string";
char *c = ch;
char[]const char*char ch[] = "test string";
const char *cc = ch;
char[]stringchar ch[] = "test string";
std::string str = ch;
char*char[]

char *c = "test string";
char ch[1024];
strcpy(ch, c);

char*const char*

char* c = "test string";

const char* cc = (const char*)c

char*stringchar* c = "test string";
std::string str = c;
const char*char[]

const char* cc = "test string";

char ch[1024];

strcpy(ch, cc);

const char*char*const char* cc = "test string";
char* c = const_cast<char*>(cc);
const char*string

const char* cc = "test string";
std::string str = cc;

stringchar[]std::string str = "test string";
char ch[1024];
strcpy(ch, str.c_str());
stringchar*std::string str = "test string";
char* c = str.data(); // C++17
char* c = &str[0]; // C++17 之前
stringconst char*std::string str = "test string";
const char* cc = str.c_str();

为安全起见,strcpy可改为strncpy,如string转char[]做如下转换:
 

std::string str = "test string";
char ch[1024];
strncpy(ch, str.c_str(), sizeof(ch));
ch[sizeof(ch) - 1] = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值