哪些头文件有.h和无.h两种版本?

blackpool 2009-08-11 06:56:45
哪些头文件有.h和无.h两种版本?如string类有:
#include<string>和#include<string.h>两个版本,
有.h和无.h的有什么区别?

有人指出:用.h的头文件,就不用using namespace std
用无.h的头文件,就必须用using namespace std

例如:
#include <iostream.h>
#include <string.h>
不用using namespace std;

-----------------------------

例如:
#include <iostream>
#include <string>
using namespace std;
必须用using namespace std;

-----------------------------

1. 有无.h的头文件还有什么区别?

2. 推荐那一种写法呢,为什么?

3. 另外如果使用using namespace std;是不是就不能再使用其他命名空间了?

4. 哪些头文件有.h和无.h两种版本?

谢谢。
...全文
349 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackpool 2009-08-14
  • 打赏
  • 举报
回复
好的,谢谢!
yangyunzhao 2009-08-12
  • 打赏
  • 举报
回复
我个人觉得是个好风格。因为我在CSDN上看到过N个帖子提问,说是遇到莫名其妙的错误,怎么也找不到。
最好发现是他自己的变量名或者函数名和std里面的冲突了。

一旦你使用了using namespace std;你就会引入已定义的名称,对于一般人而言,你很难说自己完全清楚自己引入了哪些名称。
[Quote=引用 8 楼 blackpool 的回复:]
谢谢回帖!请问用:
using std::cout
using std::cin
using std::string
这样是个好的风格吗?本人才疏学浅,还没见过这么用的,麻烦各位讨论一下。谢谢


引用 3 楼 yangyunzhao 的回复:
2、当然推荐无h写法,这个标准化以后的东西。有h是标准化之前的东西了。
3、不是的。你可以添加任意多个namespace,只要保证不冲突。但是一般建议不要使用using namespace std。用命名空间的目的就是防止冲突,隐藏信息。你这样相当于全部暴露了,如果你对std空间不熟悉的话,很有可能引入了你不知道的名称,可能造成冲突。一般建议,用了哪些就using什么。比如一般代码里面就用cout、cin、string,那么完全没有必要using namespace std。只需要
using std::cout
using std::cin
using std::string

[/Quote]
xiangweixing 2009-08-12
  • 打赏
  • 举报
回复
这只是C和C++的标准风格
lbh2001 2009-08-12
  • 打赏
  • 举报
回复
涉及全局空间
最好使用标准的做法
blackpool 2009-08-12
  • 打赏
  • 举报
回复
谢谢
blackpool 2009-08-12
  • 打赏
  • 举报
回复
嗯,好的,谢谢!
wangxing221 2009-08-11
  • 打赏
  • 举报
回复
楼主,string.h和string两个头文件里面的东西不一样,C++标准库里与C标准库中string.h对应的头文件是cstring
zgjxwl 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 taodm 的回复:]
楼主啊,离那些“有人”远点,离可以#include <iostream.h> 的编译器远点。
[/Quote]
up
  • 打赏
  • 举报
回复
哎,楼主,有空看看C++ primer,没事搜搜名字空间。

std这个名字空间只是新标准里包含的老标准里的全局的东西。
blackpool 2009-08-11
  • 打赏
  • 举报
回复
谢谢回帖!请问用:
using std::cout
using std::cin
using std::string
这样是个好的风格吗?本人才疏学浅,还没见过这么用的,麻烦各位讨论一下。谢谢


[Quote=引用 3 楼 yangyunzhao 的回复:]
2、当然推荐无h写法,这个标准化以后的东西。有h是标准化之前的东西了。
3、不是的。你可以添加任意多个namespace,只要保证不冲突。但是一般建议不要使用using namespace std。用命名空间的目的就是防止冲突,隐藏信息。你这样相当于全部暴露了,如果你对std空间不熟悉的话,很有可能引入了你不知道的名称,可能造成冲突。一般建议,用了哪些就using什么。比如一般代码里面就用cout、cin、string,那么完全没有必要using namespace std。只需要
using std::cout
using std::cin
using std::string
[/Quote]
xxcclowlg 2009-08-11
  • 打赏
  • 举报
回复
VS不就很好么。。
还带插件的。
嗯嗯
blackpool 2009-08-11
  • 打赏
  • 举报
回复
谢谢,看了你推荐的博文,

有一段说:


有两种用法:
A:
include<iostream.h>
include<fstream.h>

B:
include<iostream>
include<fstream>

A是标准用法,B是老式用法。


B例子中没有.h不是新的标准方法吗?为什么博文中说是老式用法?

[Quote=引用 2 楼 hairetz 的回复:]
#include <string>和#include <string.h>两个版本,

string.h是主要针对 C风格字符串的
string是C++的哦。


此外iostream的区别可以参考这篇博客。

http://blog.csdn.net/hairetz/archive/2009/05/14/4184385.aspx
[/Quote]
taodm 2009-08-11
  • 打赏
  • 举报
回复
楼主啊,离那些“有人”远点,离可以#include <iostream.h> 的编译器远点。
yangyunzhao 2009-08-11
  • 打赏
  • 举报
回复
2、当然推荐无h写法,这个标准化以后的东西。有h是标准化之前的东西了。
3、不是的。你可以添加任意多个namespace,只要保证不冲突。但是一般建议不要使用using namespace std。用命名空间的目的就是防止冲突,隐藏信息。你这样相当于全部暴露了,如果你对std空间不熟悉的话,很有可能引入了你不知道的名称,可能造成冲突。一般建议,用了哪些就using什么。比如一般代码里面就用cout、cin、string,那么完全没有必要using namespace std。只需要
using std::cout
using std::cin
using std::string
  • 打赏
  • 举报
回复
#include <string>和#include <string.h>两个版本,

string.h是主要针对 C风格字符串的
string是C++的哦。


此外iostream的区别可以参考这篇博客。

http://blog.csdn.net/hairetz/archive/2009/05/14/4184385.aspx
ForestDB 2009-08-11
  • 打赏
  • 举报
回复
找个好点的书?
这是新老标准的问题。
xinshou2595 2009-08-11
  • 打赏
  • 举报
回复
两种风格而已~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧