C++中字符串类型之间的互转 string、const char*、 char* 、char[]相互转换

参考博客:https://blog.csdn.net/ksws0292756/article/details/79432329?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

以下内容主要摘抄以上大神的博客:

一、总结方法:

变成string,直接赋值。
char[]变成别的,直接赋值。
char*变constchar*容易,const char*变char*麻烦。<const_cast><char*>(constchar*);
string变char*要通过const char*中转。
变成char[]。string逐个赋值,char* const char* strncpy_s()。
1、string转为其他类型

①、将string转const char*

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    std::string str = "Hellohahahhaha!";
    const char* constc = nullptr;
    constc= str.c_str();
    qDebug()<<"constc "<<constc;//Hellohahahhaha!
    return 0;
}

②、string转char*

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>


int main(int argc, char *argv[])
{
    //将string类型转换为char*类型
    std::string str = "Hellohahahhaha!";
    char* a = nullptr;
    const char* constc = nullptr;
    constc= str.c_str();//先将string类型转换为const char*
    a =const_cast<char*>(constc);//然后将const char*转换为char*
    qDebug()<<"a "<<a;//Hellohahahhaha!
    return 0;
}

③、string转char[]

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
    //将string类型转换为char[]类型
    std::string str = "Hellohahahhaha!";
    char arr[20]= {0};//初始化char[]
    for(int i = 0; i<str.length();i++)
    {
      arr[i]=str[i];
    }
    qDebug()<<"arrc "<<arr;//Hellohahahhaha!
    return 0;
}

2、const char*转为其他类型

①const char*转string

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
    //将const char*转string类型
   const char* constc = "Hellohahahhaha!";
   std::string str;
   str = constc;
   qDebug()<<"str "<<str.c_str();//Hellohahahhaha!
   return 0;
}

②const char*转char*

int main(int argc, char *argv[])
{
    //将const char*类型转换为char*类型
   const char* constc = "Hellohahahhaha!";
   char* c = nullptr;
   c = const_cast<char*>(constc);
   qDebug()<<"c "<<c;//Hellohahahhaha!
   return 0;
}

③const char*转char[]

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
    //将const char*类型转换为char[]类型
   const char* constc = "Hellohahahhaha!";
   char arrc[20] = { 0 };
   strncpy_s(arrc,constc,20);
   qDebug()<<"arrc "<<arrc;//Hellohahahhaha!
   return 0;
}

3、char*转为其他类型

①char*转string

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
    //将char*转string类型
   char* c = "HelloWorld!";
   std::string str;
   str= c;
   qDebug()<<"str "<<str.c_str();//Hellohahahhaha!
   return 0;
}

②char*转const char*

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
    //将char*转const char*类型
   char* c = "Hellohahahhaha!";
   const char* constc = nullptr;
   constc= c;
   qDebug()<<"str "<<constc;//Hellohahahhaha!
   return 0;
}

③char*转char[]

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
    //将char*转char[]类型
   char* c = "Hellohahahhaha!";
   char arrc[20] = { 0 };
   strncpy_s(arrc,c,20);
   qDebug()<<"arrc "<<arrc;//Hellohahahhaha!
   return 0;
}

4、char[]转为其他类型

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>

int main(int argc, char *argv[])
{
   char arrc[20] = "Hellohahahhaha!";
   std::string str;
   const char* constc = nullptr;
   char*c = nullptr;
   str= arrc; //char[]类型转string类型
   constc= arrc;  //char[]类型转const char* 类型
   c= arrc;      //char[]类型转char*类型

   qDebug()<<"arrc "<<str.c_str();//打印string类型:Hellohahahhaha!
   qDebug()<<"constc "<<constc;//打印 const char*类型
   qDebug()<<"c "<<c;//打印char*类型
   return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值