有没有办法在不知道它的大小的情况下制作一个char数组

时间:2014-10-17 19:17:22

标签: c++ c arrays

char* a = new char[50];

这是一项学校作业。我不允许使用字符串或向量或其他任何东西。只是char数组。

假设我想cin >> a;,我不知道输入的大小。我该怎么把它放在char数组中?以上仅适用于小尺寸的输入。

我应该这样做吗? char* a = new char[some_large_number];还是有更好的方式?

我只能使用(动态)char数组。

编辑:输入可以是任何字符串 abcd甚至是somelongrandomsentecewithoutspsomelongrandomsentecewithoutspacessomelongrandomsentecewithoutspaces

1 个答案:

答案 0 :(得分:9)

这对于字符数组来说有点棘手:您需要做的是告诉cin您不希望收到超过一定数量的字符(50个字符缓冲区为49,因为您需要空终止符的空格)。读取完成后,检查字符串的长度。如果是49,则分配一个新的更大的字符串,将旧字符串复制到其中,然后继续阅读。如果小于49,则已到达字符串的结尾。

您可以使用istream::get将数据读入缓冲区:

cin.get(a, 50); // You can specify an optional delimiter as a third parameter

请注意,您传递的长度为50,get将自动减去1,因为它知道null终止符所需的空间。