【数据类型】string与char[]的转换方法
在 【数据结构】栈与队列Part2:栈的应用之表达式转换 中,保存表达式的数据类型是string类型,而atof()函数是将char[]类型转化为浮点数的函数。
因此,将string转化为char[]的方法是非常重要的。
查阅资料:c++ string转char*
我主要采用这篇文章提到strcpy()函数进行操作,下面给出示范代码:
1 #include<iostream> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<algorithm> 5 #include<map> 6 #include<stack> 7 #include<queue> 8 9 using namespace std; 10 11 int main(){ 12 string str="12.3"; 13 char p[20]; 14 strcpy(p,str.c_str()); 15 double q; 16 q=atof(p); 17 cout<<q; 18 return 0; 19 }
下面再总结一下这篇文章有意思(看得懂)的部分:(我实在是菜的过分)
1.c_str()返回的是一个临时指针,不能对其进行操作。
我的理解是,这个函数只能用来给出一个临时的char*指针,将string转化为char*,适用于下面这种情况:
string str="12.4"; cout<<strlen(str.c_str())<<endl;
这里不需要长期的保持这个指针,因此创建了一个临时指针,指向string str。
因此在使用的时候,下面这种方法是错误的:
char* c; string s="1234"; c = s.c_str();
这种写法,在调用完c_str()函数后,这个临时指针会被销毁,则c所指向的指针是一个被销毁的垃圾数据。
因此应该创建一个char[]类型,将临时指针中的内容保存到固定的指针后。
2.还有两种声明转换方法:
string str = "hello"; const char* p = str.data();
string str=“world”; const char *p = str.c_str();
这里由于用到的是const声明方法,所以并不适用于我需要的灵活的应用场景,所以最后还是采用了strcpy()的形式保存str中的内容到char[]中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义