cin.getline 不使用 switch 语句
cin.getline Not working with switch statement
这是我程序中的一段代码,cin.getline 不适用于 switch 语句,但没有 switch 语句,它可以工作,当我将其与 switch 语句一起使用时,它只是跳过输入所以在我的代码中,我注释了 cin.getline 并将其替换为 cin>>userData;
当我将其与switch语句一起使用时,请告诉我问题是什么。
switch(option)
{
case 1:
cout<<"Enter string "<<endl;
//cin.getline(userData, 100);
cin.getline(userData,100);
您的输入流中可能存在一个n
,来自您之前的代码,不幸的是您没有在问题中显示,您需要刷新它才能cin.getline()
工作。
公认的智慧是使用ignore
:
cin.ignore(numeric_limits<streamsize>::max(), 'n');
cin.getline(userData,100);
你的代码有效
#include <iostream>
int main(){
char userData[100];
auto option = 1;
switch(option) {
case 1:
std::cout << "Enter string" << std::endl;
std::cin.getline(userData, 100);
}
std::cout << userData;
return 0;
}
一定有你没有展示的东西。
相关文章:
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 如何将 if else 语句重写为 switch 语句
- Switch 语句(字符串)一直选择默认值,除非其为零
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 默认标签显然在 switch 语句中不起作用
- C++如何在 switch 语句中放置两个参数
- 如何在 c++ 中从 switch 语句返回不同类型的变量
- 在编译时自动生成用于稀疏数组索引的switch语句
- C++ Switch 语句中的数学运算
- 变量不能在 lambda 中隐式捕获,并且没有使用 switch 语句指定捕获默认值
- 在任何案例之前,在 switch 语句中的使用声明是否合法?
- 使用 switch 语句将不同的函数作为类属性分配 C++
- 为什么我的 switch 语句没有响应一半的情况?
- 如何从映射中获取值并在 C++ 的 switch 语句中使用它
- switch 语句导致发送两条消息
- C++ Switch 语句在中断后执行
- switch语句,两种类似情况不同
- switch 语句和对象隐式 int 转换
- switch 语句结束和下一条语句之间的时间是否具有确定性(与路径无关)