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