请教C++ Primer中(IO标准库)的一道题目

行而尚学 2013-05-06 03:44:21
题目如下
假设os是一个ofstream对象,下面程序做了什么?
os << "GoodBye!" << endl;
如果os是ostringstream对象呢?或者,os是ifstream对象呢?

我编写的测试代码如下(以测试os是ostringstream对象的情况为例):
#include <iostream>

using namespace std;

int main()
{
ostringstream os;

os << "GoodBye!" << endl;

return 0;
}

结果编译报错如下:


请问我的测试代码哪里出问题了,ostringstream类是这样使用的吗?
谢谢
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
行而尚学 2013-05-06
  • 打赏
  • 举报
回复
引用 5 楼 youyou1912 的回复:
1. ostreamstring 在头文件<sstream>里面 2. ostreamstring不能输出endl, 那是cout用的 如果要输出请改用cout. 如果要内存操作, 可以用ostreamstring或者stringstream http://blog.csdn.net/qq1987924/article/details/7671154
在书本的8.5节也说到了必须要包含这个头文件。 正在看你分享的帖子,基本没问题了。
snake_xiongyang 2013-05-06
  • 打赏
  • 举报
回复
加上头文件<sstream>
youyou1912 2013-05-06
  • 打赏
  • 举报
回复
1. ostreamstring 在头文件<sstream>里面 2. ostreamstring不能输出endl, 那是cout用的 如果要输出请改用cout. 如果要内存操作, 可以用ostreamstring或者stringstream http://blog.csdn.net/qq1987924/article/details/7671154
cmztestat 2013-05-06
  • 打赏
  • 举报
回复
上面报错不是说ostringstream类型报错么 加上头文件<sstream>
mujiok2003 2013-05-06
  • 打赏
  • 举报
回复
引用 2 楼 u010240236 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] ifstream 不支持 <<
os << "Goodbye!" << std::endl; //输出“Goodbyte!换号符“,结果可能还在缓冲区中 
1. 我并没有使用ifstream 2. 我的问题是编译报错,详细信息见原帖,并不是运行出问题。 3. 我的代码最后有输出换行符<<endl,这也是能刷新缓冲区的。前面使用了using namespace std,后面endl时前面就没有必要加上std::了。[/quote] endl只有在行缓冲的设备(比如标准输出)中才能刷新缓冲区。
行而尚学 2013-05-06
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
ifstream 不支持 <<
os << "Goodbye!" << std::endl; //输出“Goodbyte!换号符“,结果可能还在缓冲区中 
1. 我并没有使用ifstream 2. 我的问题是编译报错,详细信息见原帖,并不是运行出问题。 3. 我的代码最后有输出换行符<<endl,这也是能刷新缓冲区的。前面使用了using namespace std,后面endl时前面就没有必要加上std::了。
mujiok2003 2013-05-06
  • 打赏
  • 举报
回复
ifstream 不支持 <<
os << "Goodbye!" << std::endl; //输出“Goodbyte!换号符“,结果可能还在缓冲区中 

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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