C ++ Char无限制

时间:2010-04-29 03:08:49

标签: c++ char

我非常精通C#,但我认为学习C ++也是一个好主意。我唯一想不出的就是字符。我知道你可以使用字符串lib但我也想弄清楚字符。

我知道你可以设置一个像这样的限制的字符:

#include <iostream>
using namespace std;

int main()
{
   char c[128] = "limited to 128";
   cout << c << endl;
   system("pause");
   return 0;
}

但是如何制作没有限制的字符?我见过带有*的字符但是我虽然那是指针。非常感谢任何帮助。

5 个答案:

答案 0 :(得分:6)

你不能没有限制的数组。数组在内存中占用空间,遗憾的是没有无限的内存。

基本上,您必须创建一个具有特定大小的数组并编写逻辑以扩展数组的大小,因为您需要更多空间(并且可能因为您需要更少的空间而缩小它)。

这是std::stringstd::vector为您做的事情。

答案 1 :(得分:2)

您可以vector使用char

答案 2 :(得分:0)

std :: string是chars矢量的一个很好的实现:)

答案 3 :(得分:0)

数据结构需要为其分配内存。

某些数据结构(如字符串或字符向量)在其类中具有内部逻辑,可根据需要动态分配内存。

Arrays(来自C)没有 - 您需要手动为它们分配内存,通过静态方式(char c [128])作为示例,或者在运行时通过malloc()和company动态分配。当然,做动态分配/重新分配权并不是很简单,为什么在已经有类(例如字符串)以正确的方式为你做的时候呢? :)

答案 4 :(得分:0)

C / C ++ char数组与char*几乎完全相同。相同的代码块可以重写为:

int main()
{
   char* c = "limited to 128";
   cout << c << endl;
   system("pause");
   return 0;
}

编译器将为您生成一个空终止字符串,您可以在整个代码中使用它。动态执行此操作的方法是使用mallocoperator new []

char* str = malloc(sieof(char) * requiredlength); //C-compatible

OR

char* str = new char[requiredlength];