Cin.get()是非阻塞的
cin.get() is non-blocking
我有与链接问题中提到的相同的问题。控制台窗口(在VS 2010中)在运行程序后立即消失。我使用cin.get();结束了主要功能,但问题依然存在。知道可能的原因吗?您可以查看main:
中的代码。int main()
{
const int arraysize = 10;
int order;
int counter;
int a[arraysize] = {2,6,4,45,32,12,7,33,23,98};
cout<<"Enter 1 to sort in ascending ordern"
<<"Enter 2 to sort in descending ordern";
cin>>order;
cout<<"Data items in original ordern";
for(counter=0;counter<arraysize;counter++){
cout<<setw(4)<<a[counter];
}
switch (order){
case 1: cout<<"nData items in ascending ordern";
selectionSort(a, arraysize, ascending);
break;
case 2: cout<<"nData items in descending ordern";
selectionSort(a, arraysize, descending);
break;
default: return 0;
}
for(counter=0;counter<arraysize;counter++){
cout<<setw(4)<<a[counter];
}
cout<<endl;
cin.get();
return 0;
}
link: Windows上的c++ -控制台窗口只是闪烁并消失。发生了什么事?
所以当在cin之后使用cin.get()时,您应该始终记住在它们之间添加cin.ignore()。
cin>>order;
cin.ignore();
/*
other codes here
*/
cin.get();
这主要是因为CIN会忽略缓冲区中的空白,所以在CIN>>顺序之后,缓冲区中有一个"换行符"(n),然后是CIN。读取n,然后程序成功执行并返回。cin.ignore()将忽略缓冲区中先前的输入。这真的很有帮助!
我是中国的一名学生。你的问题是我第一个可以回答的问题。我曾经有过和你一样的烦恼。我希望这对你有所帮助。请忽略我的蹩脚英语,谢谢。
我猜
default: return 0;
执行。编辑:
你说得对,这不是问题。读这。快速修复是:
cout<<endl;
cin.ignore(); // <---- ignore previous input in the buffer
cin.get();
但是您可能需要阅读文章以获得有关该行为的进一步信息。
我打赌你击中了默认开关标签(return 0;
)。这样就绕过了cin.get()
-每个返回语句需要一个cin.get()
。
可能您的cin.get()
正在读取终止您的订单输入的换行符?您可以尝试调用cin.get()
两次。
相关文章:
- Cpp-Tuple使用带有变量的get
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 通过 get-Method 访问变量在类外不起作用
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++中是否有任何函数等同于python中字典的get函数?
- 是否可以在C++中有一个"generic"模板参数,该参数可以是非类型模板参数或类型?
- 使用istringstearm和get行缓慢读取文件
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- NVCC 错误:string_view.h:constexpr 函数返回是非常量
- 编译器是否必须始终删除 try-catch 块(如果它被证明是非抛出的)
- C++ 电话号码字母拨号程序 - 语法错别字?还是非 ASCII 字符?
- 使用 cin.get() 初始化字符数组
- std::variant<>::get() 不能使用 Apple LLVM 10.0 编译
- 编写 cin.get() 以接收字符数组时出现问题
- 作用域枚举和标准::get
- 什么是非营利组织???我的问题是我不明白为什么有人会使用它
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- Cin.get()是非阻塞的