有谁知道这里连续使用 cin cout 和 gets 时为什么 C 指令被重新排序? 我正在使用 Dev-C++ 4.9.9.2。
#include<iostream>
using namespace std;
int main(){
char a[10],b;
for(;;){
cout<<"\ncin>>b:";
cin>>b;
cout<<"gets(a):";
gets(a);
cout<<"cout<<a<<b:"<<a<<" "<<b<<"\n\n";
}
}
我得到如下输出:
cin>>b:132
gets(a):cout<<a<<b:32 1
cin>>b:465
gets(a):cout<<a<<b:65 4
cin>>b:312242
gets(a):cout<<a<<b:12242 3
cin>>b:1
gets(a):cout<<a<<b: 1
cin>>b:
似乎在 gets 中传递了 cin 的一些输入.. 而且指令似乎也被重新排序为:
cin>>b;
gets(a);
cout<<"gets(a):";
而不是,
cin>>b;
cout<<"gets(a):";
gets(a);
最佳答案
cin>>b 只读取一个字符,剩下的输入由后面的输入操作读取。所以 gets sill 有东西要读,不要阻塞。
在第一个 cin >> b
处,没有可用的输入。您在缓冲区中输入 '132\n'(来自终端的输入通常是逐行输入的),然后从中取出 1。 gets 读取下一个字符 32 和终止 gets 的\n。它不需要从终端读取更多内容。
关于c++ - 连续使用 cin cout 和 gets 时,C 指令正在重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102222/