cpp中字符串的动态内存分配

时间:2015-11-05 15:53:20

标签: c++

所以,我现在已经在代码上工作了5个小时,而且逻辑看起来很好,程序似乎做了它的工作,唯一能让我烦恼的就是动态内存分配字符串。该问题未指定用户必须输入的初始字符串数。以下是我一直在尝试动态捕捉字符串的内容:

      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];
      }

不确定它是否正确。如果不是动态字符串,我可以通过这种方式存储2D字符数组。

感谢你, 拉夫

3 个答案:

答案 0 :(得分:5)

使用字符串向量而不是使用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

答案 1 :(得分:1)

由于您将此问题标记为C ++,我会这样做:

std::vector<std::string> s1(1000009);

这就是全部 - 不需要使用malloc,也不需要关心破坏。 如果您使用的是C ++,请使用您可用的工具。

答案 2 :(得分:0)

我会这样做:

int i = 0;
char **s1;
s1 = (char **)malloc(t * sizeof(char *));
while (i < t)
{
 s1[i] = (char *)malloc(1000009 * sizeof(char));
 i++;
}

第一个malloc创建你的行。 第二个为每行填写alloc 100000009charactere