标签:总结 char* http tar ons pac 函数 调用 black
在 【数据结构】栈与队列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[]中。
标签:总结 char* http tar ons pac 函数 调用 black
原文地址:https://www.cnblogs.com/Ze-Black/p/10059999.html