如何将字符串与包含空格的短语一起使用
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];
我在 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];