如何使用包含空格的短语的字符串

时间:2017-01-31 22:33:43

标签: c++ string c-strings

我在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) 问题解决了!感谢大家的帮助!

1 个答案:

答案 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];