c++字符串

概念区分:

在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>

  1. <string>是C++特化的字符容器,内含string类。
  2. <string.h>是标准C提供的字符处理函数集。面向char *.
  3. <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)。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值