我在cin.ignore()之后使用了cin.getline,但是我收到一条错误,指出未分配的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) 问题解决了!感谢大家的帮助!
答案 0 :(得分:0)
问题在于
char letter[1];
不够大。如果C字符串要容纳N
个字符,则需要将其声明为char letter[N+1]
,以便为空终止符字符留出空间。因此,如果用户要输入单个字符,则需要:
char letter[2];
因此,当cin >> letter
将2个字符写入只有1个空间的数组时,您将获得未定义的行为。
同样,如果允许用户输入10个字母的单词,则应该是:
char word[11];
应该是:
char phrase[31];