c++字符串
来源:互联网 发布:手机号码归属地软件 编辑:程序博客网 时间:2024/06/06 12:56
概念区分:
在c中,是没有string类型数据的。但是c语言里有<string.h>这个头文件。
区分string的含义:
(1)如果string表示字符串型数据,那么c中是有字符串类型数据的(用char[]或者char *来声明定义)。但是没有string类型数据。而c中的<string.h>这个头文件里声明的函数原型也是针对char数组的种种操作。
(2)(c++中)string可以表示string类型。string是一种特殊的类。可以和vector、list一样,都是标准库类型。
string类型支持长度可变的字符串。c++标准库将负责管理与存储字符相关的内存以及提供各种有用的操作。
需要:
#include<string>using std::string;
容易弄混的三个头文件:<string><string.h><cstring>
- <string>是C++特化的字符容器,内含string类。
- <string.h>是标准C提供的字符处理函数集。面向char *.
- <cstring>是C++为兼容C提供的<string.h>的C++版本,里面的主要改进应该是有:将一些隐藏变量编入命名空间;修正一些C++编译器认为Bug的代码。其余没发现很多改变。
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<string>#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;}输出:
c中的字符串
错误示例:
int main(int argc, char* argv[]){char *n;n=new char[20];n="Hello World";printf("%s\n",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)。
0 0
- C字符串
- C++--字符串
- C字符串
- [C#] 字符串
- c字符串
- C++--字符串
- C-字符串
- C-字符串
- C:字符串
- C字符串
- C 字符串
- C--字符串
- C 字符串
- C字符串
- 【c++】字符串
- C字符串
- 【C++】字符串
- C字符串
- struts2 错误总结 自己会不断更新中。。。。。
- android系统action大全
- u-boot2011网络驱动模型
- Python之自动化打包脚本(针对server设备)
- 天声人語
- c++字符串
- 【Android】Activity与Fragment的生命周期的关系
- 欢迎使用CSDN-markdown编辑器
- 多屏显示
- IOS Runtime(二)
- 每日_VS Assembly resolve 程序自定义加载Dll文件
- 【人月神话】第三章:外科手术队伍
- 移动端开发 干货知识分享
- 程序员不可不知的英文词汇(3)