char* a = new char[50];
这是一项学校作业。我不允许使用字符串或 vector 或其他任何东西。只是字符数组。
假设我想执行 cin >> a;
并且我不知道输入的大小。我应该如何将它放在 char 数组中?以上仅适用于小尺寸输入。
我应该这样做吗? char* a = new char[some_large_number];
还是有更好的方法?
我只能使用(动态)字符数组。
编辑:输入可以是任何字符串,例如
abcd
甚至 somelongrandomsentecewithoutspsomelongrandomsentecewithoutspacessomelongrandomsentecewithoutspaces
最佳答案
这对于字符数组来说有点棘手:您需要做的是告诉 cin
您不想接收超过一定数量的字符(对于 50 个字符的缓冲区为 49,因为你需要空终止符的空间)。读取完成后,检查字符串的长度。如果是49,分配一个新的更大的字符串,把旧的字符串复制进去,继续读。如果小于49,则已到达字符串末尾。
您可以使用 istream::get
将数据读入缓冲区:
cin.get(a, 50); // You can specify an optional delimiter as a third parameter
请注意,您将长度传递给 50,get
将自动减去 1,因为它知道空终止符所需的空间。
关于c++ - 有什么方法可以在不知道它的大小的情况下制作一个字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26431924/