string s; while(cin>>s)何时中止?

lucky_huastar 2006-06-16 09:52:05
有问过,有说Ctrl+Z的,有说Ctrl+N的。可是我尝试了一下,没有结束的反应啊?
string s1;
while (cin>>s1)
{}
何时中止s1的输入啊?
...全文
362 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzstephen 2006-06-16
  • 打赏
  • 举报
回复
cin>>s1返回一个istream 对象 所以 while(cin>>s1)这种写法会死循环,因为你在判断cin>>s1 这个语句是否为空
低调的小青蛙 2006-06-16
  • 打赏
  • 举报
回复
while(!cin.eof()) // Ctrl + Z 则 eof 为真
{
cin >> s;

......
}
pzp 2006-06-16
  • 打赏
  • 举报
回复
可如下写就是了:
const int lineSize=1024;
char inBuf[1024];
memset(inBuf,0,sizeof(inBuf));
while(cin.getline(inBuf,lineSize))
{
int ReadIn = cin.gcount();
cout<<"INPUT:"<<inBuf<<endl;
}
PMsg 2006-06-16
  • 打赏
  • 举报
回复
加一个对S1判断就BREAK了呗
lucky_huastar 2006-06-16
  • 打赏
  • 举报
回复
我输入 aswef然后Ctrl+Z就成了 asweffe^Z接着第二个 aswe^Z,然后程序没有反应.
程序是用来判断一个string对象是否是另一个string对象的起始部分。比如awse 是awsewdf的起始部分,那么返回true.
请帮看一下程序,谢谢各位了。
#include <iostream>
#include <cstdlib>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::string;

int main()
{
string s1,s2;
bool t=true;
while (cin>>s1)
{}
while (cin>>s2)
{}
if (s1.size()<=s2.size())
{
for (string::size_type iv=0; iv!=s1.size(); ++iv)
{
if (s1[iv]!= s2[iv])
{
t=false;
break;
}
}

}
else
{
for (string::size_type iv=0; iv!=s2.size(); ++iv)
{
if (s1[iv]!= s2[iv])
{t=false;
break;
}

}

}
if (t)cout<<"true!"<<endl;
else
cout<<"false!"<<endl;
system("pause");
return 0;
}
hsilz 2006-06-16
  • 打赏
  • 举报
回复
ctrl+Z
ctrl+c
sharpdew 2006-06-16
  • 打赏
  • 举报
回复
ctrl+Z
晨星 2006-06-16
  • 打赏
  • 举报
回复
Windows下Ctrl-Z,Linux下Ctrl-D,试试看。

64,637

社区成员

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

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