C++ char * char string 转换

17 篇文章 0 订阅

1. string转const char*

string与const char*可以直接转换

#include <string.h>
string str = "abc";
const char* c_s = str.c_str();

2. const char*转string

const char*与string可以直接转换

#include <string.h>
const char* c_s = "abc";
string str(c_s);

3. string转char*

string与char * 不能够直接转换,需要过度const

#include <string.h>
string str = "abc";
char* c;
const int len = str.length();
c = new char[len+1];
strcpy(c,str.c_str());

4. char*转string

char * 可以直接转换为string

#include <string.h>
char* c = "abc";
string str(c);

5. const char转char

const char不能够直接转换为char,需要新申请一块空间,用于转换

#include <string.h>
const char* conch = "abc";
char* c = new char[100];//足够长
strcpy(c,conch);

6. char转const char

char可以直接转换为const char

#include <string.h>
char* c = "abc";
const char* conch = c;

7.char数组转string

直接赋值

#include <iostream>
using namespace std;
 
int main()
{
	char a[]=" abc  d\0efg "; 	 //注意终止符会直接截断
	char b[]=" abc  defg "; 
	string str_a=a;  //直接赋值
	string str_b=b;  //直接赋值
	
	cout<<str_a<<endl;	
	cout<<"str_a len="<<str_a.length()<<endl;	
	cout<<str_b<<endl;	
	cout<<"str_a len="<<str_b.length()<<endl;	
	return 0;
}

结果:

$g++ -o main *.cpp
$main
 abc  d
str_a len=7
 abc  defg 
str_a len=11

8.string转char数组

调用strcpy函数,和字符串的data函数: (char数组可以更改)(string转char数组)

(1)strcpy不能赋值给char指针 ,只能赋值给char数组;

(2)char数组长度,必须大于等于string长度。

#include<iostream>
#include<cstring>
using namespace std;
 
int main()
{	
	string s="123456"; 
	char c[s.length()]; 
	
	/*
	**调用strcpy函数,和字符串的data函数 
	**1、strcpy不能赋值给char指针 ,只能赋值给char数组 
	**2、char数组长度,必须大于等于string长度 
	*/ 
	strcpy(c,s.data()); 	
	cout<<"c str is :"<<endl;
	cout<<c<<endl;
	cout<<strlen(c)<<endl;

	c[0]='6';
	cout<<"c str 2 is :"<<endl;
	cout<<c<<endl;
	cout<<strlen(c)<<endl;
	
	return 0;
	
}

结果:

c str is :
123456
6
c str 2 is :
623456
6

代码在线编译网址:
https://www.nhooo.com/tool/cpp/
https://c.runoob.com/

参考:
https://qa.1r1g.com/sf/ask/2001330341/
https://blog.csdn.net/qq_40123036/article/details/120068779

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值