我非常精通C#,但我认为学习C ++也是一个好主意。我唯一想不出的就是字符。我知道你可以使用字符串lib但我也想弄清楚字符。
我知道你可以设置一个像这样的限制的字符:
#include <iostream>
using namespace std;
int main()
{
char c[128] = "limited to 128";
cout << c << endl;
system("pause");
return 0;
}
但是如何制作没有限制的字符?我见过带有*的字符但是我虽然那是指针。非常感谢任何帮助。
答案 0 :(得分:6)
你不能没有限制的数组。数组在内存中占用空间,遗憾的是没有无限的内存。
基本上,您必须创建一个具有特定大小的数组并编写逻辑以扩展数组的大小,因为您需要更多空间(并且可能因为您需要更少的空间而缩小它)。
这是std::string
和std::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;
}
编译器将为您生成一个空终止字符串,您可以在整个代码中使用它。动态执行此操作的方法是使用malloc
或operator new []
。
char* str = malloc(sieof(char) * requiredlength); //C-compatible
OR
char* str = new char[requiredlength];