【C++】std::string 转换成非const类型 char* 的三种方法记录

简介: 【C++】std::string 转换成非const类型 char* 的三种方法记录

std::string 有两个方法:data() 和 c_str(),都是返回该字符串的const char类型,那如何转换成非const的char呢?

下面展示三种方法:

  • 强转:char* char_test = (char*)test.c_str();
  • 使用string的地址:char* charPointer = &test[0];
  • 使用const_cast转换:char* charCast = const_cast<char*>(test.c_str());
#include <iostream>
#include <string>
using namespace std;
int main()
{
   cout << "Hello World" << endl; 
   std::string test = "hello string";
   printf("%s", test.c_str());
   
   char* char_test = (char*)test.c_str();
   printf("\nchar_test: %s", char_test);
   
   char* charPointer = &test[0];
   
   printf("\ncharPointer: %s", charPointer);
   
    char* charCast = const_cast<char*>(test.c_str());
    printf("\ncharCast: %s", charCast);
   
   return 0;
}

顺便提一句:C++11以后,string 的 data() 方法和 c_str() 方法作用一样,没区别了。that is, c_str() and data() perform the same function. (since C++11)

相关文章
|
Linux
嵌入式 V4L2 应用编程(1):抓取 uvc camrea 图像
嵌入式 V4L2 应用编程(1):抓取 uvc camrea 图像
904 0
|
存储 算法 物联网
MCU串口命令解析器的实现
MCU串口命令解析器的实现
633 1
|
消息中间件 存储 缓存
详解高性能无锁队列的实现-1
详解高性能无锁队列的实现
1252 0
|
存储 开发框架 .NET
C#中将DataTable转化成ListT的方法解析
C#中将DataTable转化成ListT的方法解析
1357 0
|
存储 Web App开发 JavaScript
手把手教你安装鸿蒙和运行第一个Demo(js)版
在体验之前,大家可以先看这张图,然后按图索骥,不过不会在这个教程教如何如何安装nodejs,
541 0
手把手教你安装鸿蒙和运行第一个Demo(js)版
|
NoSQL 网络协议 Redis
Redis从入门到精通之Redis事件机制详解
Redis采用事件驱动机制来处理大量的网络IO,这是Redis实现高性能的关键之一。Redis并没有采用成熟的开源方案如libevent或libev,而是自己实现了一个非常简洁的事件驱动库ae_event。
1233 110
Redis从入门到精通之Redis事件机制详解
|
数据库管理
SVN 执行cleanup报错:Cleanup failed to process the following paths : 解决方法
引用:https://www.cnblogs.com/pinpin/p/11395438.html 在SVN更新时提示文件被锁住了,要求执行 clean up操作,执行clean up时又报clean up failed。造成的原因是在某次更新后,点击了cancel按钮,操作没有完成所以会锁住。解决方法如下:
3439 0
|
开发工具 git
git fetch和 pull的区别
`git fetch`和 `git pull`在Git中扮演着不同的角色,了解它们的区别和使用场景对于高效管理代码库至关重要。通过合理使用这两个命令,可以更好地控制代码合并过程,减少冲突,提高团队协作效率。
1260 97
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
3143 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
Unix 异构计算 Windows
带你读《基于CUDA的GPU并行程序开发指南》之一:CPU并行编程概述
本书旨在帮助读者了解与基于CUDA的并行编程技术有关的基本概念,并掌握实用c语言进行GPU高性能编程的相关技巧。本书第一部分通过CPU多线程编程解释了并行计算,使得没有太多并行计算基础的读者也能毫无阻碍地进入CUDA天地;第二部分重点介绍了基于CUDA的GPU大规模并行程序的开发与实现,并通过大量的性能分析帮助读者理解如何开发一个好的GPU并行程序以及GPU架构对程序性能的影响;本书的第三部分介绍了一些常用的CUDA库。

热门文章

最新文章