C++中使用strcpy()函数需要#include<cstring>吗?

来源:百度知道 编辑:UC知道 时间:2024/06/01 21:24:32
例如下诉语句:
strcpy((ps+0)->name, "Mocha Munch");

为何我使用VC6.0在头文件中只用了#include<iostream>也能调用strcpy函数

用<string>能调用strcpy()吗?
<cstring>和<string>效果一样吗?
用new创建动态数据时:
CandyBar * ps=(CandyBar*)new CandyBar[3]等价于CandyBar * ps=new CandyBar[3]吗?需要这样(CandyBar*)强制类型转换吗?

不一定!
#include<cstring>与#include<iostream>里都有关于strcpy的声明,所以,这两个只要有一个在,均可。

这不是好几个问题吗?

1.STL库会隐性载入一些C类库,所以iostream里面已经include了strcpy申明的头文件了。我记得有一个对应表的,那些C类库被隐性包含,但我不记得那里找了。

2.<string>包不包含不知道,你自己做做实验吧

3.<cstring>和<string>是两个完全不一样的东西。后者是STL string类的头文件,前者是C++类库对C类库<string.h>的封装(其实内部就只是加了一个namespace,再include了<string.h>而已)

4.不需要类型强制转换,new出来的时候就是相应的类型了,一般new的东西都不需要类型转换(因为只有本类型指针或者需要cast成父类指针这两种可能,后者会做隐式类型转换)。