如何将字符串与包含空格的短语一起使用

How to use string with phrases that contain spaces

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

问题是

char letter[1];

不够大。如果 C 字符串最多可容纳 N 个字符,则需要将其声明为 char letter[N+1] 以便为空终止符留出空间。因此,如果用户要键入单个字符,则需要为:

char letter[2];

因此,当 cin >> letter 将 2 个字符写入只能容纳 1 个字符的数组时,您会遇到未定义的行为。

同样,如果允许用户输入 10 个字母的单词,则应该是:

char word[11];

应该是:

char phrase[31];