免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1751 | 回复: 4
打印 上一主题 下一主题

输入/输出流问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-13 23:33 |只看该作者 |倒序浏览
/*
 * 书上说 fstream 头文件也包含了 iostream 头文件,
 * 所以我们不需要同时包含这个两个文件。
 * 但是下面的代码在编译的时候出现错误提示:
 * error: `cout' is not a member of `std'.
 *
 * 若包含了头文件 iostream 就ok了
 * */


#include <fstream>
#include <string>

int main() {
&nbsp;&nbsp;&nbsp;&nbsp;std::string _if("exercise.cpp");

&nbsp;&nbsp;&nbsp;&nbsp;std::ifstream ifile(_if.c_str());
&nbsp;&nbsp;&nbsp;&nbsp;if (! ifile) return 1;

&nbsp;&nbsp;&nbsp;&nbsp;std::string tmp;
&nbsp;&nbsp;&nbsp;&nbsp;while (! ifile.eof()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifile>>tmp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout<<tmp<<std::endl; // 此处应怎么写,不写 std:: 会提示 cout 未声明

&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

论坛徽章:
0
2 [报告]
发表于 2008-01-13 23:44 |只看该作者
书上说的。。。。
或许是错的
至少应该怀疑一下
然后去自己查找一下
我在一个linux下的include中
貌似文件fstream中未包含iostream

论坛徽章:
0
3 [报告]
发表于 2008-01-14 10:43 |只看该作者
在解决实际问题的时候,多包含(涵)一下是不会有错的

论坛徽章:
0
4 [报告]
发表于 2008-01-14 12:04 |只看该作者
大哥们,是 C++ primer 上说的

论坛徽章:
0
5 [报告]
发表于 2008-01-14 13:16 |只看该作者

回复 #1 cppnewbie 的帖子

* 书上说 fstream 头文件也包含了 iostream 头文件,
* 所以我们不需要同时包含这个两个文件。
* 但是下面的代码在编译的时候出现错误提示:
* error: `cout' is not a member of `std'.
*
* 若包含了头文件 iostream 就ok了

这个貌似跟具体gcc版本有关
不过根据标准, 即使包含了#include <iostream>
也要用std::cout的啊。

我测试的结果slareware gcc 2.95.3 下,
只需要
#include <fstream>  就可以了。
也不用std:: cout
没看里面的实现,不过看版本老的程序,估计是<fstream>里include <iostream> ,且因为版本很老,所以<iostream>直接调用的<iostream.h>,这样就导致了cout本身不需要std::的命名空间。


而suse gcc 4.1 下,即使#include <iostream>
也要用std::cout 才可以编译通过。 这个标准点,因为已经分离了<iostream>和<iostream.h>,所以必须指定命名空间。

看楼主LZ的情况类似于第一种。呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP