C++ cpp中字符串的动态内存分配
这是我花了5个小时编写的代码,逻辑看起来很好,程序似乎完成了它的工作,唯一困扰我的是字符串的动态内存分配。问题没有指定用户必须输入的字符串的初始数目。以下是我一直在尝试的动态获取字符串的方法:C++ cpp中字符串的动态内存分配,c++,C++,这是我花了5个小时编写的代码,逻辑看起来很好,程序似乎完成了它的工作,唯一困扰我的是字符串的动态内存分配。问题没有指定用户必须输入的字符串的初始数目。以下是我一直在尝试的动态获取字符串的方法: int t; cin>>t //number of strings user wishes enter char *s1[1000009]; //1000009 is the maximum number of digits each string c
int t;
cin>>t //number of strings user wishes enter
char *s1[1000009]; //1000009 is the maximum number of digits each string can have
for(i=0;i<t;i++)
{
s1[i]=(char *)malloc(1000009)
cin>>s1[i];
}
intt;
cin>>t//用户希望输入的字符串数
char*s1[1000009]//1000009是每个字符串可以包含的最大位数
对于(i=0;i>s1[i];
}
不确定这是不是正确的方法。如果不是动态字符串,我也可以通过一种方法来存储二维字符数组
谢谢你,
高拉夫我会这样做:
int i = 0;
char **s1;
s1 = (char **)malloc(t * sizeof(char *));
while (i < t)
{
s1[i] = (char *)malloc(1000009 * sizeof(char));
i++;
}
inti=0;
字符**s1;
s1=(char**)malloc(t*sizeof(char*);
而(i
第一个malloc创建您的t行。
第二个为每行填写alloc 10000009字符我会这样做:
int i = 0;
char **s1;
s1 = (char **)malloc(t * sizeof(char *));
while (i < t)
{
s1[i] = (char *)malloc(1000009 * sizeof(char));
i++;
}
inti=0;
字符**s1;
s1=(char**)malloc(t*sizeof(char*);
而(i
第一个malloc创建您的t行。
第二个填充每行的<100/10000 > /< p> 因为你把这个问题标记成C++,我会这样做:
std::vector<std::string> s1(1000009);
std::向量s1(1000009);
仅此而已-无需使用malloc,无需担心破坏。
如果你使用C++,使用你可用的工具。,因为你把这个问题标记为C++,我会这样做:
std::vector<std::string> s1(1000009);
std::向量s1(1000009);
仅此而已-无需使用malloc,无需担心破坏。
如果你正在使用C++,请使用你可用的工具。< /P> < P>使用字符串向量,而不是使用MalC/Cux.< /P>
int t;
std::cin >> t;
std::vector<std::string> strings(t); //Create t strings
for(int i = 0; i < t; i++)
std::cin >> strings[i]; //Read into each string
intt;
标准:cin>>t;
std::vector strings(t);//创建t字符串
for(int i=0;i>字符串[i];//读入每个字符串
使用字符串向量,而不是使用malloc/new
int t;
std::cin >> t;
std::vector<std::string> strings(t); //Create t strings
for(int i = 0; i < t; i++)
std::cin >> strings[i]; //Read into each string
intt;
标准:cin>>t;
std::vector strings(t);//创建t字符串
for(int i=0;i>字符串[i];//读入每个字符串
我认为您应该使用std::vector
和std::string
进行手动动态分配。不要使用malloc
进行手动动态分配。而是使用new
进行手动动态分配。完全不要使用手动动态分配。而是使用std::string
进行替代。在堆栈上创建1000009个元素的数组是个坏主意。我认为您应该使用std::vector
和std::string
。不要使用malloc
进行手动动态分配。改用new
。根本不要使用手动动态分配。改用std::string
。在堆栈上创建1000009个元素的数组是个坏主意。但如上所述,std::string的向量将更有效。正如他所说d没有编译,我仍然不知道向量如何以任何方式使用malloc或new工作。std::string test;std::vec;int t;int I=0;std::cin>>t;而(I