我正在试图弄清楚如何正确使用cin.getline()并遇到一个我无法找到答案的问题 .

我正在为我正在学习的课程做作业,我需要能够使用cin从用户那里获取整行文本,包括空格 . 我们不能使用字符串,我们必须使用字符数组(这是分配的要求) . 我决定只使用cin.ignore()和cin.getline(ARRAY_NAME,'\ n') .

这是我的问题:cin.getline()好像正在拾取白色空格,但由于某种原因,它正在切断我的线并且只存储正在输入的前9个字符 .

这是相关的代码(与“cin”的使用相关的东西被隔离到我从main调用的“菜单”函数,它从用户那里得到输入所以我认为我不需要麻烦每个人的其余部分它):

#include<iostream>
#include<cstring>
using namespace std;

void menu(){
    char name[30];
    char description[50];
    char articleTitle[50];

    cin.clear();
    cin.ignore(); // Idk if both clear and ignore are necessary here
    cout << endl << "Enter name: ";
    cin.getline(name, '\n');
    cout << endl << "Enter description: ";
    cin.ignore();
    cin.getline(description, '\n');
    cin.ignore();
    cin.getline(articleTitle, '\n');
    cin.ignore();

它正在使用所有这些东西来构建一个类对象并将其添加到一个列表中,并且它应该打印成功消息,如果它的工作方式类似于

cout << endl << "you added " << name << " to the list" << endl;

但是发生了什么,如果我为这三个字符数组中的任何一个输入超过9个字符,它会打印成功消息,其中“name”被修剪为9个字符,然后退出程序 .

我不认为它可能与我的程序的其余部分有任何关系,因为我不会在输入后以任何方式编辑任何字符数组,并且只有当我输入超过9个字符时它才会中断三个 . 如果我为“name”输入9,为“description”输入9,那么当我为“articleTitle”输入10时它仍会打破

有谁知道这可能导致什么?提前致谢