首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于std:cin组塞的有关问题

2012-06-15 
关于std::cin组塞的问题假如我在主线程里循环C/C++ codewhile (bcontinue){std::string inputsgetline(st

关于std::cin组塞的问题
假如我在主线程里循环

C/C++ code
while (bcontinue){   std::string inputs;   getline(std::cin, inputs);   if ("q" == inputs)      bcontinue = false;.....................}


程序会一直阻塞在std::cin等待console的输入, 而某些情况我可能要跳过std::cin不能阻塞,
程序能模拟给std::cin一个数据继续执行下去吗?
当然不要用exit(0)这样很暴力的东西

[解决办法]
C/C++ code
while (bcontinue){   if(某些情况) //没有太看懂你的意思,是不是要这样?      break;   std::string inputs;   getline(std::cin, inputs);   if ("q" == inputs)      bcontinue = false;.....................}
[解决办法]
ls应该可以了
[解决办法]
那个,复杂交互还是用个gui程序吧,别折腾控制台程序了。
[解决办法]
while (bcontinue)
{
std::string inputs;
getline(std::cin, inputs,'q');
}
[解决办法]
那,同样,不可能cin能解决所有问题。
cin天生就是阻塞的。
[解决办法]
直接输入非"q"的字符串不也是模拟数据吗?
[解决办法]
1.使用管道,把输入改向
2.使用信号,比如自定义信号处理函数USR1,然后向进程发送USR信号,可以中断阻塞状态
[解决办法]
比如在linux的gdb调试状态下,可以这样执行:

r < /dev/null

[解决办法]
有个函数可以满足LZ的要求,ungetc(ch,stdin);把字符ch放回输入流
[解决办法]
可以写一个特定的字符,输入该字符就忽略,
例如p

热点排行