从char到String * C ++的转换无效

时间:2014-04-22 03:33:25

标签: c++ pointers struct

String* substr(String* str, int start, int end)
{   
   String* substring = new String;
   for(int i = start; i < end; i++)
   {
       substring =  str->text[i];
   }   

   return substring;
}

我需要存储位于String结构的文本数组成员中的子字符串。该方法应该采用数组的一部分(由分隔符分隔)并将其存储在变量str1和str2中,然后比较它们。我遇到了第6行的问题,其中字符串是子字符串应该被创建和存储。

1 个答案:

答案 0 :(得分:1)

由于没有其他人回答...... 首先改变你的结构:

struct String {
    char* text;    // Removed const
    int sz;
};

现在,改变你的功能

String* substr(String* str, int start, int end)
{   
   String* substring = new String;

   //Alloc enough space to hold chars + EOS
   substring->text = new char[end - start + 1]; 
   // Save string length - does not include EOS
   substring->sz = end - start;       

   for(int i = start; i < end; i++)
   {
       // TODO: Error checking should be added to make sure it doesn't go
       // beyond original string bounds

       // Copy the substring
       substring->text[i - start] =  str->text[i];
   }
   // Add end of string
   substring->text[substring->sz] = '\0';

   return substring;
}

注意,这样做,以后需要删除数组和结构:

delete [] substring->text;
delete substring;

或者,您可以使用std::string ...