C++ char*string substract函数引发异常

C++ char*string substract函数引发异常,c++,arrays,string,char,C++,Arrays,String,Char,我正在开发我自己的字符串类PString,我有一个函数 查找一个特定字符,如6,现在我有一个名为substr short fo substract的函数,其中我想从0减到[insertnumber]。 我试图称之为这样做: PString string; int to = 0; string = "A string = a string"; // lol string.find('=', to); string.substr(to); 我的find函数很好,可以100%工作,但是substr函

我正在开发我自己的字符串类PString,我有一个函数 查找一个特定字符,如6,现在我有一个名为substr short fo substract的函数,其中我想从0减到[insertnumber]。 我试图称之为这样做:

PString string;
int to = 0;
string = "A string = a string"; // lol
string.find('=', to);
string.substr(to);
我的find函数很好,可以100%工作,但是substr函数不工作。 下面是我的substr函数:

void PString::substr(int to) {
    char* temp = new char[255];
    temp = this->c_str();
    for (int i = 0; i < to; i++) {
        temp[i] = ' ';
    }
}
void PString::substr(int-to){
char*temp=新字符[255];
temp=this->c_str();
for(int i=0;i
此->c_str()只返回对象所持有的当前字符串,这是 防止失败,但我无法通过第一个for循环,temp[I]=''只是抛出一个异常,我完全不知道为什么

哦,是的,我知道我的函数没有删除temp和更多的东西,但是这还没有实现,因为我正在尝试让for循环首先工作

编辑修复,通过多创建几个函数(从已创建的PString中创建新PString)
还使用了memcpy而不是简单的equals运算符

您在这里犯的第一个明显错误是:

char* temp = new char[255];
temp = this->c_str();
分配内存,然后复制指针的值。因此,首先是内存泄漏,其次是根据
c_str()
的实现,复制不应该更改的内容的地址(
std::string
c_str()
返回
const char*

这是因为
std::string
的实际实现实际上并不需要堆分配的数组,而有些实现实际上在内部为短字符串存储一个小数组

因此,如果您确实想创建一个新字符串,最好的做法是复制内存:

char* temp = new char[this->size()];
memcpy(temp,this->c_str(),this->size()) //I assume 8-bit string, change if you use widechars

然后使用
temp
来初始化一个新字符串。

“substr”是“substring”,而不是“substract”。然后返回一个新字符串。try
strcpy(temp,c_str())
…@OskarDahlberg如果您的目标是删除字符,为什么要创建一个新字符串?这在很多方面都是错误的。这行怎么样实现?您是只保存指向所提供字符串的指针,还是复制该字符串?