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行的问题,其中字符串是子字符串应该被创建和存储。
答案 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 ...