社区
C++ 语言
帖子详情
#include
#include
#include
有什么区别啊?
lieyu063
2004-10-30 12:49:24
我在下面的三种写法中:
#include<cstring> //不可以定义string s;可以用到strcpy等函数
using namespace std;
#include<string> //可以定义string s;可以用到strcpy等函数
using namesapce std;
#include<string.h> //不可以定义string s;可以用到strcpy等函数
这三种到底有什么区别啊?
...全文
727
16
打赏
收藏
#include<cstring> #include<string> #include<string.h>有什么区别啊?
我在下面的三种写法中: #include //不可以定义string s;可以用到strcpy等函数 using namespace std; #include //可以定义string s;可以用到strcpy等函数 using namesapce std; #include //不可以定义string s;可以用到strcpy等函数 这三种到底有什么区别啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lieyu063
2004-10-30
打赏
举报
回复
我在VC6.0中做的。
somedummy
2004-10-30
打赏
举报
回复
楼上连C标准库的string.h和C++标准库的string都分不清……
firefox6868
2004-10-30
打赏
举报
回复
我所知到的一点
关于#include <string.h>和#include<string>
using namesapce std;
的区别一个是前者为旧版本c++编一器使用,后者为新版本采用
只不过在新版本中兼容了旧的写法,不过在旧版本中
是不能运行新的,应该是这样
sevencat
2004-10-30
打赏
举报
回复
我不知道你问这个有什么意义,难道你不会臫自己看一下头文件吗?
somedummy
2004-10-30
打赏
举报
回复
定义和声明都在std里面,只不过在不同的头文件里面有不同的部分而已
firefox6868
2004-10-30
打赏
举报
回复
是吗?!
~~~~~~~~~~~~~~~~~~~~~~~~
...如过使用的是几年前创建的编译器,那么在编译这些程序时就会报告许多错误,因为这些编译器不能识别几项c++新功能...
由于新式头文件不是文件名,so他们没有.h文件扩展名.他门只是包含尖扩号内的头文件名.如:
<iostream>
要将这些新文件转换成旧试头文件,只添加.h扩展名即可...
~~~~~~~~~~~~~~~~~~~
from (美)
Herbert Schildt
2004年5月第一版
lieyu063
2004-10-30
打赏
举报
回复
是不是说std里放着的只是所以成员声明,并没有所有成员的定义?
somedummy
2004-10-30
打赏
举报
回复
cout的定义在iostream里面,当然需要包含这个头文件了,否则连接器找不到cout这个符号的意义,这样就没有办法链接成可执行文件了
另外,std里面也不是把所有的东西全都放进去了,没个头文件里面都有std的部分定义(每包含一个C++风格的头文件就会打开一次std,然后加入新的名字空间成员定义)
lieyu063
2004-10-30
打赏
举报
回复
我的意思是说为什么少了#include<string>程序可以运行,少了#include<iostream>就不能运行呢?
somedummy
2004-10-30
打赏
举报
回复
cout是一个类实例,被封装到了std里面,有什么问题吗?
lieyu063
2004-10-30
打赏
举报
回复
#include<iostream>
using namespace std;
void main()
{
char *pc ="student";
char p[20];
strcpy(p,pc); //这样子也能执行,真搞不懂。std里到底有多少东西啊? //把#include<iostream>就不可了。难道std里有strcpy没有cout?
cout<<p<<endl;
}
somedummy
2004-10-30
打赏
举报
回复
我说了,cstring其实是把string.h放到std里面去而已,对于string.h,你不可以使用string模板,自然cstring也不可以了
两个都是符合C++标准,当在C++源文件中包含C标准库的时候,就可以用库名前面加c,后面的.h去掉的方式,你看看CRT的源代码就知道了
lieyu063
2004-10-30
打赏
举报
回复
我要纠正一点,可能VC6的string不是基于模板的(我要纠正一点,但是我明确的知道VC6里面的iostream库肯定不是基于模板的)
----------------------------
那么在标准C++中string就是基于模板的吗?这点你确定吗?
lieyu063
2004-10-30
打赏
举报
回复
谢谢楼上的,但我还是搞不大明白
#include<cstring> //不可以定义string s;可以用到strcpy等函数
using namespace std;
#include<string> //可以定义string s;可以用到strcpy等函数
using namesapce std;
上面这两个有什么区别?为什么上面的那个不能定义string s?这两个哪个更符合标准C++呢?
somedummy
2004-10-30
打赏
举报
回复
我要纠正一点,可能VC6的string不是基于模板的(这个不是很确定,但是我明确的知道VC6里面的iostream库肯定不是基于模板的)
somedummy
2004-10-30
打赏
举报
回复
cstring代表的是string.h,但是被封装到了std里面,譬如调用strlen函数,需要写成std::strlen(yourstr)才行,这个使用方法比较符合C++的标准要求
string就是C++标准库里面的string模板(确切地说应该是一个特化的模板),但是他同样包含了C风格字符串操作函数的定义(应该是通过包含string.h实现的)
string.h就不需要使用名字空间了,这个是C风格字符串操作的一个函数库,strlen,strcpy,strcat,strcmp……都在这里面了,不过既然是C风格的库,当然不需要namespace支持了。
C++中MFC开发C
String
类转换函数大全
需要#
include
<c
string
> #
include
<
string
> #
include
<
string
.h>这三个head C++中MFC开发C
String
类转换函数大全,涵盖以下函数: C
String
string
toC(
string
x);//
string
类转C
String
类
string
Cto
string
(C
String
x);...
c++——万能头文件。
万能头文件 万能头文件就是一个包含几乎所有的头文件,如: #
include
<iostream> #
include
<cstdio> #
include
<fstream> #
include
<algorithm> #
include
<cmath> #
include
<deque> ...#
include
<bits/stdc++.h>
C++中#
include
<
string
>与#
include
<
string
.h>的
区别
C++中#
include
<
string
>与#
include
<
string
.h>的
区别
#
include
<
string
>与#
include
<c
string
>的
区别
小卓同学产生这个疑惑,是因为在做题的时候发现有的大佬的题解写的是前者,有的则是后者. 我便咨询了一下我的老师...以下是我对二者的理解 如有错误 请学长学姐们 不吝赐教 谢谢! 1.
string
是C++中特有的类 但是在...
#
include
<
string
.h>、#
include
string>与#
include
<
string
>的
区别
string
.h是C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等,更详细的信息可以自己查看(面向过程) c
string
C
String
常用于MFC编程中,是属于MFC的类,如从对话框中利用GetWind
C++ 语言
64,648
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章