| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3771 人关注过本帖
标题:stream和stream.h有什么区别啊
只看楼主 加入收藏
yydksx
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-1-17
收藏
 问题点数:0 回复次数:15 
stream和stream.h有什么区别啊
#include<stream> 和<stream.h>有什么区别啊
为什么后者不能 using namespace std;
找了半天也没找到,using namespace std;这个我是在霍登的<<c++入门经典>>上学到的
搜索更多相关主题的帖子: stream std using 霍登 namespace 
2006-05-25 22:12
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
是iostream和iostream.h吧?

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-26 09:24
bleach1983
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-5-22
收藏
得分:0 

我也想知道呢~~


动感超人~~动感光波~~HOHO~~小白,你也是男孩子,所以你也要努力~~
2006-05-26 09:26
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
似乎以前也有人问过这个问题,我把我的理解说出来,其实我们随便用哪个都可以,它们对于输入输出流的支持够我们大部分正常情况下用了
iostream和iostream.h实现方式不一样,iostream中对于ostream和istream的实现方式是用模板实现的:
typedef basic_istream<char, char_traits<char> > istream;
typedef basic_ostream<char, char_traits<char> > ostream;
basic_ostream是一个模板,定义如下
template<class _E, class _Tr = char_traits<_E> >
class basic_istream : virtual public basic_ios<_E, _Tr>
而iostream.h直接是用普通的类来实现的,
class _CRTIMP ostream : virtual public ios

两者的使用方式是一致的,不过iostream是用模板实现的,以后比较好扩展,而且支持宽字符wchar_t(用wcout替换cout)
类似定义:
wistream wcin;
typedef basic_istream<wchar_t, char_traits<wchar_t> > wistream;

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-26 10:01
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
aogun
你说的那些我是看不懂
大一还没学呢
以前的帖不过我有问题想请教你

#include<iostream.h>
#include<time.h>
//using namespace std;
void main()
{
int i;
int tmp[7];
srand(time(0));
for(int j=0,z=0;j<7;j++,z=0)
{
i=rand()%35;
i++;
while(z<=j)
{
while(tmp[z++]==i)
{
i=rand()%35;
z=0;}
}
tmp[j]=i;
cout<<tmp[j]<<endl;
}
}
什么改成了传统格式就有错误了?

D:\VC++6.0英文标准版\liao5930\Cpp1.cpp(8) : error C2065: 'srand' : undeclared identifier
D:\VC++6.0英文标准版\liao5930\Cpp1.cpp(11) : error C2065: 'rand' : undeclared identifier
Error executing cl.exe.

Cpp1.obj - 2 error(s), 0 warning(s)
这是正确的
#include<iostream>
#include<time.h>
using namespace std;
void main()
{
int i;
int tmp[7];
srand(time(0));
for(int j=0,z=0;j<7;j++,z=0)
{
i=rand()%35;
i++;
while(z<=j)
{
while(tmp[z++]==i)
{
i=rand()%35;
z=0;}
}
tmp[j]=i;
cout<<tmp[j]<<endl;
}
}
目的是35选7,同时组不相同,数不相同


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-26 10:56
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
关于名字空间
我不了解
希望大家指点

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-26 10:58
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用song4在2006-5-26 10:56:00的发言:
aogun
你说的那些我是看不懂
大一还没学呢
以前的帖不过我有问题想请教你

#include<iostream.h>
#include<time.h>
#include <stdlib.h>

//using namespace std;
void main()
{
int i;
int tmp[7];
srand(time(0));
for(int j=0,z=0;j<7;j++,z=0)
{
i=rand()%35;
i++;
while(z<=j)
{
while(tmp[z++]==i)
{
i=rand()%35;
z=0;}
}
tmp[j]=i;
cout<<tmp[j]<<endl;
}
}
什么改成了传统格式就有错误了?

D:\VC++6.0英文标准版\liao5930\Cpp1.cpp(8) : error C2065: 'srand' : undeclared identifier
D:\VC++6.0英文标准版\liao5930\Cpp1.cpp(11) : error C2065: 'rand' : undeclared identifier
Error executing cl.exe.

Cpp1.obj - 2 error(s), 0 warning(s)
这是正确的
这于这个为什么正确,那是因为iostream中包含的头文件中包含了stdlib.h文件
稍微查了一下,包含关系如下:
->#include <istream> -> #include <ostream> -> #include <ios> -> #include <streambuf> -> #include <xlocnum> -> #include <cstdlib> -> #include <stdlib.h>

#include<iostream>
#include<time.h>
using namespace std;
void main()
{
int i;
int tmp[7];
srand(time(0));
for(int j=0,z=0;j<7;j++,z=0)
{
i=rand()%35;
i++;
while(z<=j)
{
while(tmp[z++]==i)
{
i=rand()%35;
z=0;}
}
tmp[j]=i;
cout<<tmp[j]<<endl;
}
}
目的是35选7,同时组不相同,数不相同

[此贴子已经被作者于2006-5-26 11:59:29编辑过]


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-26 11:56
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
那是因为time.h的成员函数都定义在std空间类,应该说一般的库函数都被定义在了std里了

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-26 12:33
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
晕,wfpb你再确认下你没有写错?

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-26 13:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

呵呵,你就直接指出我的错误算了,我是这么理解的

书上说,将所有的类都包含在标准空间std中,所以要用std::或则using namespace std;宏例外


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-26 13:53
快速回复:stream和stream.h有什么区别啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047494 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved