关于cin,cin.get()和cin.getline() 的区别

pause123 2009-05-11 11:43:34
cin,cin.get()和cin.getline() 的区别? 要详细...谢谢了!
...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pause123 2009-05-12
  • 打赏
  • 举报
回复
谢谢了~
liliangbao 2009-05-11
  • 打赏
  • 举报
回复
昨天刚刚恢复:

cin会忽略空白符即:空格、换行、制表符直到遇到非空白符才将保存流数据,所以你使用cin永远读不到空白符~

cin.get()和cin.getline()是什么字符都读入除了回车符,使用他们就可以读入空格和制表符了

cin.get()和cin.getline()区别:
1.当正常读入时,即读入的串长度小于他们允许的长度时,
cin.get()不读取回车符,这样回车符仍然在缓冲区中,而cin.getline()读取回车符但不存储,这样缓冲区中没有回车符了~

2.当无读入时,即只输入回车符
cin.get()将设置failbit状态位表示读取失败,而cin.getline()不设置failbit,因为他读取了回车符但是不保存~
如:第一种情况不进入循环,读取失败,返回false退出循环~
buf[80] = {0};
while(cin.get(buf,80))//只输入超过回车符符,将不进入循环~
{
cout<<"进入"<<endl;
}
char buf[80] = {0};
while(cin.getline(buf,80))
{
cout<<"进入"<<endl;
}


3.当输入串长大于他们的预输入的长度时,
cin.get()不设置failbit位,而cin.getline()设置failbit位,但是这种情况和编译器有关~
char buf[8] = {0};
while(cin.getline(buf,8))//输入超过8的字符,将不进入循环~
{
cout<<"进入"<<endl;
}

pause123 2009-05-11
  • 打赏
  • 举报
回复
自己顶!
内容概要:本文围绕“【SCUC】N-1故障集+安全约束机组组合研究(Matlab代码实现)”展开,系统探讨电力系统在N-1故障场景下的安全约束机组组合(SCUC)问题,旨在实现系统安全性与运行经济性的协同优化。研究通过构建包含机组启停、出力计划、潮流约束、备用容量及N-1安全准则的数学模型,结合混合整数线性规划等优化算法,利用Matlab平台完成仿真求解,并引入YALMIP等建模工具提升建模效率。文档提供了完整的代码实现方案与测试案例,涵盖故障集的生成与处理方法,帮助用户掌握鲁棒性和分布鲁棒优化的基本思想,适用于电力系统安全校核与调度决策支持。; 适合人群:电力系统及相关专业的研究生、从事电力调度、能源优化的科研人员及工程技术人员。; 使用场景及目标:① 掌握N-1安全准则在机组组合中的建模方法与实现流程;② 开展安全约束机组组合(SCUC)与安全约束经济调度(SCED)的仿真分析;③ 利用Matlab/YALMIP快速搭建电力系统优化模型并进行求解与验证。; 阅读建议:建议读者结合文档内容与网盘提供的完整资源(含代码与数据),动手实践建模与调试过程,重点关注约束条件的设定、故障场景的枚举与处理策略,同时参考相关文献深化对鲁棒优化与分布鲁棒方法的理解。

65,211

社区成员

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

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