【发布时间】:2023-03-10 12:41:01
【问题描述】:
我在 cin.ignore() 之后使用了 cin.getline,但我收到一条错误消息,说 unassigned int... 不知道该怎么做或出了什么问题。有什么建议吗?
这是我的代码:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
string phras;
cout << " Provide a phrase, up to 30 characters with spaces > " << endl;
cin.ignore();
cin.getline(phras, sizeof(phras));
cout << " The phrase is: " << phras << endl;
cout << endl;
return 0;
}
更新 我改变了 cin.getline(phras, sizeof(phras)); 到 getline(cin,phras) 问题解决了!感谢大家的帮助!
【问题讨论】:
-
你为什么把代码放在你不想让我们评论的问题中?如果不相关,请忽略它。
-
>>捕获单个字符的操作将在 cin 缓冲区中留下一个换行符。您可以使用cin.ignore()将其删除。 -
@paulRooney 所以我应该在 cin >> 字母之前还是之后写?很抱歉澄清问题。我只是想确保我做对了!顺便谢谢你。
-
在
cin >> letter;之后但在cin.getline(word, sizeof(word));之前。如果您在该点输入多个字符,它仍然会搞砸。 -
如果有人看这里作为参考,这行得通^^^。添加 cin.ignore()