Getline()结合cin.ignore()不存储变量?(错误)
Getline() combined with cin.ignore() is not storing variable? (Bug)
我不认为这个问题不是这个的重复。虽然是由同样的原因引起的,但却是问题的不同表现。
当我运行这个程序时,终端输出看起来像这样(我的输入是1
和Rock Lee
,然后是enter
):
输入数字:
1
输入您的姓名:
Rock Lee
Name为空
但是,名称不应该是空的。为什么名称变量是""
?我如何修复这个bug?下面是代码:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main () {
int num;
string name;
cout << "Enter a number: ";
cin >> num;
cout << "Enter your name: ";
getline(cin, name, 'n');
cin.ignore (1000, 'n');
if (name == "")
{
cout << "Name is blank.";
return -1;
}
return 0;
}
另外,请注意,我希望在解决方案中使用Getline(),并且我希望能够读取整行(因此名称可以是任何内容,而不仅仅是姓和名)。
当我试图注释cin.ignore(1000, 'n');
时,它给出了这个输出,这也是不正确的:
输入号码:
1
输入您的姓名:name为空。
它甚至不给我机会输入我的名字。我该如何解决这个问题?
cin >> num
读取,直到它看到空白,但它不丢弃空白,所以它在输入中留下'n'
。对getline
的调用看到它并立即返回,用空字符串填充name
。您需要在getline
之前调用cin.ignore
,以忽略cin::operator>>
留下的'n'
。
相关文章:
- 修复未初始化的局部变量错误
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 如何修复C 中向量的过载变量错误
- GUI QT全局变量错误
- 全局变量错误C
- GetFieldValue用于时间变量错误
- 变量错误:未知类型名称
- 在变量错误中浮动
- 无法使用函数变量?错误表达式必须具有类类型
- 计数器变量错误
- 初始化 cpp 文件中的私有静态成员变量.错误:成员是私有的
- 在 GetTransfer 之后,我在帐户 1 收到未分配变量错误。我无法弄清楚我搞砸了什么逻辑错误
- 变量错误的重新定义
- 在 C++ 中传递 int 变量 - 错误检查不返回值
- 未使用的变量错误,或者应该是错误
- C++外部矢量变量错误
- c模板成员变量错误
- c++中的全局变量错误LNK2020
- vc++类.静态变量错误,外部符号无法解析