请教一个关于输入流的问题

CaesireKin 2012-04-27 01:03:59
就是想问下,为什么有时候用输入流从控制台获取输入,还没输入,就执行过去了?期间没有要求用户任何的输入,就这样神奇的执行过去了!!想请教下这是为什么,贴上代码让大家看看
问题代码段1:
//ASCII解码方式
string strSendOutASCII = "";
string temptemp = "";
//ASCII临时变量
char tempASCII = ' ';

cout << "请输入字码进行解码,输入结束时请按空格结尾:" << endl;
//就下面这段出问题了char buffer[1024] ; char* pScanner
cin.getline(buffer,1023,'\n');
pScanner = buffer;
问题代码段2:
//用于存储用户输入
string playerInput;
cout << "Game Start!" << endl;
while(true)
{
//生成字符串
generateString();
//将生成的字符串输出
cout << resourceString << endl;
startTime = time((time_t*)NULL);
//获取用户输入,就是这里出了问题,明明执行,却没有要求从控制台
getline(cin,playerInput,'\n');
elapsedTime = time((time_t*)NULL);
//部分省略
}
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaesireKin 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]


getline(cin,playerInput,'\n');
改成:

char playerInput[1024];

cin.getline(playerInput,1023,'\n');这样来读
[/Quote]
等等。。。你把我弄晕了。。。getline的第一个参数是输入流,第二个是目标,第三个参数表示读到回车是停止。。。。。。。。今天做的题目太多,晕了- -|
CaesireKin 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]


getline(cin,playerInput,'\n');
改成:

char playerInput[1024];

cin.getline(playerInput,1023,'\n');这样来读
[/Quote]
啊,是个问题哦,粗心了,谢谢你帮忙指出来
hen_hao_ji 2012-04-27
  • 打赏
  • 举报
回复

getline(cin,playerInput,'\n');
改成:

char playerInput[1024];

cin.getline(playerInput,1023,'\n');这样来读
CaesireKin 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

用scanf,getchar等读取字符串或者字符的时候容易出现缓冲区残留'\n'的情况。
于是下次读取的时候,就会读取到'\n'.
为了防止这种情况,可以在scanf/getchar函数之前加下面三条语句之一:
标准:rewind(stdin);
windows扩展:fflush(stdin);
暴力:stdin->_cnt=0;


getline同理.
c++方法:
ci……
[/Quote]

哈,谢谢啦,问题解决了
evencoming 2012-04-27
  • 打赏
  • 举报
回复
用scanf,getchar等读取字符串或者字符的时候容易出现缓冲区残留'\n'的情况。
于是下次读取的时候,就会读取到'\n'.
为了防止这种情况,可以在scanf/getchar函数之前加下面三条语句之一:
标准:rewind(stdin);
windows扩展:fflush(stdin);
暴力:stdin->_cnt=0;


getline同理.
c++方法:
cin.ignore(256,'\n');//add
getline(cin,playerInput,'\n');

64,654

社区成员

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

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