| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1398 人关注过本帖
标题:iostream与iostream.h的区别
只看楼主 加入收藏
rongaaa
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2010-12-3
结帖率:66.67%
收藏
已结贴  问题点数:3 回复次数:13 
iostream与iostream.h的区别
#include<iostream>
using namespace std;
class Complex
{
public:
    Complex()  { real=0;imag=0; }
    Complex(double r,double i) { real=r; imag=i; }
    Complex operator +(Complex &c2);
    friend ostream& operator<<(ostream&,Complex&);
private:
    double real;
    double imag;
};

Complex Complex::operator+(Complex &c2)
{  return Complex(real+c2.real,imag+c2.imag);  }

ostream& operator<<(ostream &output,Complex &c)
{
    output<<"("<<c.real<<"+"<<c.imag<<"i)"<<endl;
    return output;
}

int main()
{
    Complex c1(2,4),c2(6,10),c3;
    c3=c1+c2;
    cout<<c3;
    return 0;
}
上面这个程序在vc环境中试无法通过的,必须得将第一行修改成为
#include <iostream.h>
同时删去第二行才可以,这是为什么呢
搜索更多相关主题的帖子: iostream 
2010-12-06 10:36
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
using namespace std;
这句话是使用标准名空间   
编译器的问题

                                         
===========深入<----------------->浅出============
2010-12-06 10:42
andyandy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:108
专家分:94
注 册:2009-4-28
收藏
得分:0 
看了看iostream.h和iostream这两个文件。老实说,看不大懂。
但是确实不一样。
2010-12-06 16:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
如果不常看头文件的话,直接看肯定是看不出什么明堂。

另外,如果编译器连 iostream 都不支持,就应该换一个。
2010-12-06 19:21
mengxin3310
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-21
收藏
得分:0 
编译器的问题~····
2010-12-08 13:41
尝鲜
Rank: 2
等 级:论坛游民
帖 子:24
专家分:12
注 册:2010-10-21
收藏
得分:0 
#include<iostream>
class Complex
{
public:
    Complex()  { real=0;imag=0; }
    Complex(double r,double i) { real=r; imag=i; }
    Complex operator +(Complex &c2);
    friend std::ostream& operator<<(std::ostream&,Complex&);
private:
    double real;
    double imag;
};
using namespace std; 这个在同一个文件中定义的类重载《 或》时在V6中有歧义。。。

Complex Complex::operator+(Complex &c2)
{  return Complex(real+c2.real,imag+c2.imag);  }

ostream& operator<<(ostream &output,Complex &c)
{
    output<<"("<<c.real<<"+"<<c.imag<<"i)"<<endl;
    return output;
}

int main()
{
    Complex c1(2,4),c2(6,10),c3;
    c3=c1+c2;
    cout<<c3;
    return 0;
}
2010-12-08 14:40
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
你的编译器太老了

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-12-08 22:11
tansuo
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-6
收藏
得分:0 
iostream
  iostream 的意思是 输入输出流
  直接点说就是in(输入) out(输出) stream(流)
  取 in out 的首字母与 stream 合成
C++语言中
  #include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。
  在旧的标准C++中,使用#include<iostream.h>
  但在新标准中,用#include<iostream>,而且在VS中编程的同时要注意要添加:
  using namespace std;
  using namespace std详解
  一 :
  <iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
  后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
  因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
  二:
  所谓namespace,是指标识符的各种可见范围。
  C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
  由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
  1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:
  std::cout << std::hex << 3.4 << std::endl;
  2、使用using关键字。
  using std::cout;
  using std::endl;
  以上程序可以写成
  cout << std::hex << 3.4 << endl;
  3、最方便的就是使用using namespace std;
  例如:
  #include <iostream>
  #include <sstream>
  #include <string>
  using namespace std;
  这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
  cout << hex << 3.4 << endl;
  因为标准库非常的庞大,所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。
  所以就有了<iostream.h>和<iostream>等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。
  命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"



收到的鲜花
  • 尝鲜2010-12-18 17:43 送鲜花  1朵   附言:我很赞同
2010-12-08 22:52
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 8楼 tansuo
二话不说。

南国利剑
2010-12-10 01:27
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:0 
VC6不支持C99标准,而iostream是C99提倡的
2010-12-10 07:43
快速回复:iostream与iostream.h的区别
数据加载中...
 
   



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

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