加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

C++中string类字符串和c中char*/char[]型型字符串的差异

发布时间:2021-12-14 21:26:22 所属栏目:PHP教程 来源:互联网
导读:概念区分 在c中,是没有string类型的数据的。但是C语言里有string.h这个头文件。容易让人误认为c中有string类型的数据。 区分string的含义: 1)(在c和c++中)如果string表示字符串型数据,那么c中是有字符串类型数据的(用char[]或者char *来声明定义)。但是
概念区分
 
在c中,是没有string类型的数据的。但是C语言里有<string.h>这个头文件。容易让人误认为c中有string类型的数据。
 
区分string的含义:
 
1)(在c和c++中)如果string表示字符串型数据,那么c中是有字符串类型数据的(用char[]或者char *来声明定义)。但是没有string类型数据。而c中的<string.h>这个头文件里声明的函数原型也全是针对char数组的种种操作,如strcmp,strcpy,strcat等。
 
2)(在c++中)如果string表示string类型,那么c++中才有,c中没有。string在c++中是一种特殊的类。string 和 vector、list一样,都是标准库类型。 string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。
 
需要:
 
#include <string>
 
using std::string;c++中string类,示例:
 
#include<iostream>   
#include<string>   
using std::string;  
using namespace std;  
int main(){   
string s = "abcdefg";  
string::iterator i;//支持迭代器    
for(i=s.begin();i!=s.end();i++)  
  cout<<*i<<" ";//逐个输出string s中的元素    
 system("pause");  
 return 0;  
}  
 
 
与vector容器区别,例:
 
#include<iostream>   
#include<vector>   
using namespace std;  
int main()  
{  
vector<string> s(5,"abcdefg");  
vector<string >::iterator i;  
for(i=s.begin();i!=s.end();i++)  
  cout<<*i<<" ";//逐个输出vector s中的元素    
 system("pause");  
 return 0;  
}  
 
 
错误示例:
 
int main(int argc, char* argv[])
{
char *n;
n=new char[20];
n="Hello World";
printf("%sn",n);
return 0;
}
上述代码有误,指出其中三个错误:
第一,C语言里没有new。
C中是这样的:
char * n;
n = (char *)malloc(sizeof(char) * 20);
第二,分配的空间在栈中,不能给它直接等堆里的常量。
n = "Hello, World!"; // 错
应该是 strcpy(n, "Hello, World!");
第三,C/C++中分配了空间要释放。
C++中new了就要delete,其中 new [] 和 delete []配对,new 和 delete 配对。
C中用malloc分配的内存对应的是 free。
所以上述代码中需要要 free (n)。
 
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读