关于函数模板的问题:用cout, 写至文件 和 写至stringstream测试程序

ysysbaobei 2008-12-03 11:34:52
题目要求:
编写一个函数模板,接受一个ostream引用和一个值,将该值写入流。用至少四种不同类型调用函数。通过写至cout、写至文件和写至stringstream来测试你的程序。

我的问题:
写至stringstream的功能好像没有实现,怎么能测试到实现没?

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;

template <typename T>
T write(ostream &os, const T &v)
{
os << v;
return 0;
}

int main()
{
write(cout, "wo");
cout << endl;

ofstream of;
of.open("x.txt");
write(of, "ai");

// 怎么没输出? 未实现题目要求
stringstream ss;
write(ss, "ni");
cout << endl;

return 0;
}

...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lann64 2008-12-03
  • 打赏
  • 举报
回复
还有你的文件没有关闭
lann64 2008-12-03
  • 打赏
  • 举报
回复
怎么会,我把返回类型改成void了。
ysysbaobei 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lann64 的回复:]
C/C++ code#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;

template <typename T>
void write(ostream &os, const T &v)
{
os << v;
// return 0; // 不要的话,提示错误
}

int main()
{
write(cout, "wo");
cout << endl;

ofstream of;
of.open("x.txt");
write(of, "ai");

// 怎么没输出? 未实现题目要求
stringstream ss;

[/Quote]
我那个问题解决了
你程序里把 return 0;去掉,编译出错哦
yuwei2589 2008-12-03
  • 打赏
  • 举报
回复

stringstream ss;
write(ss, "ni");

不能输出"ni"的,它把字符串“ni”放到ss中,你当然无法看到。
可以详细查看下stringstream 的介绍~
lann64 2008-12-03
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;

template <typename T>
void write(ostream &os, const T &v)
{
os << v;
// return 0;
}

int main()
{
write(cout, "wo");
cout << endl;

ofstream of;
of.open("x.txt");
write(of, "ai");

// 怎么没输出? 未实现题目要求
stringstream ss;
write(ss, "ni");
cout << ss.str()<<endl;

return 0;
}

ysysbaobei 2008-12-03
  • 打赏
  • 举报
回复
page542_3.cpp(p528/542)
ysysbaobei 2008-12-03
  • 打赏
  • 举报
回复
谢谢楼上的
问题解决了,结贴
lann64 2008-12-03
  • 打赏
  • 举报
回复
of.close();
// 不论有无上句 of.close(), if语句都输出......... ? 怎么测试有没关闭?
-----------
使用完关闭文件是个好习惯。1、释放文件句柄(资源释放)。2、确保写的内容实际写入文件,而不是暂存在缓冲区里。3、一旦掉电、死机、发生异常,不会丢失写入的东西。
ysysbaobei 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lann64 的回复:]
还有你的文件没有关闭
[/Quote]
是这样?

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;

template <typename T>
void write(ostream &os, const T &v) // void类型,下面不提供返回值
{
os << v;
}

int main()
{
write(cout, "wo");
cout << endl;

ofstream of;
of.open("xxx.txt"); // 在.cpp文件夹下,自动建立一个名为 .cpp的文本文档
// of.open("d:/woaini.txt"); // 像这样指出绝对路径也可以
write(of, "ai");
of.close();
// 不论有无上句 of.close(), if语句都输出......... ? 怎么测试有没关闭?
if (of)
cout << ".........." << endl;

stringstream ss;
write(ss, "niaiwoma");
cout << ss.str() << endl; // 加上此句后,实现了输出

return 0;
}
内容概要:本文详细介绍了一种基于自适应虚拟阻抗的光储并网系统谐波抑制策略,并提供了完整的Simulink仿真实现方案。该策略针对光伏-储能系统在并网过程中因非线性负载或电网波动引发的电流谐波问题,通过引入自适应调节机制动态调整虚拟阻抗参数,从而有效提升系统在不同运行工况下的谐波抑制能力与电能质量水平。文档强调“完美复现”,表明所构建模型具有高度准确性与可验证性,具备较强的工程应用参考价值,适用于科研仿真、教学实践及高水平论文成果复现。; 适合人群:具备一定电力电子、自动控制与电力系统基础知识,从事新能源并网、微电网控制、电能质量治理等相关研究方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解光储并网系统中谐波产生机理及其抑制方法;②掌握自适应虚拟阻抗控制策略的设计原理与Simulink建模技术;③复现高水平学术论文中的关键成果,支撑科研课题推进、学位论文撰或工程项目开发。; 阅读建议:建议结合文中提示的“公众号——荔枝科研社”获取完整仿真资源,按照文档指引逐步搭建模型,重点关注控制器结构设计、参数整定过程及仿真结果的对比分析,以实现对核心技术的深刻理解与灵活应用。

65,210

社区成员

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

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