1
MyStringという独自のStringクラスを作成しようとしています。私は文字列操作関数がほとんどありません。それらのすべては挿入機能以外は機能します。何度も挿入機能を使用すると、プログラムがクラッシュします(source.exeは機能しなくなりました)。私は現在Dev C++を使用しています。カスタムchar * insert関数は、複数回実行すると実行時エラーを返します
MyString MyString::insert(MyString s2, int pos) {
int size = strlen(this->getptr());
if(pos > size || pos < 0){
return "Error";
}
char * ptrLeft = this->substr(0, pos);
char * ptrRight = this->substr(pos, size - pos);
strcat(ptrLeft, s2.getptr());
strcat(ptrLeft, ptrRight);
return ptrLeft;
}
これは、文字列MyStringクラスのSUBSTR()関数です:私は、次の多くを行うと
MyString::MyString(char* str){
int size = strlen(str);
ptr = new char[size];
ptr = str;
}
:
char * MyString::substr(int position, int length) {
char* otherString = 0;
otherString = (char*)malloc(length + 1);
memcpy(otherString, &this->getptr()[position], length);
otherString[length] = 0;
return otherString;
}
パラメータ化されたコンストラクタ(するchar * ptrがプライベートメンバーです)時々、クラッシュすることがあります。
buff = buff.insert(" Text", 5);
cout << buff;
system("PAUSE");
buff = buff.insert(" Text", 5);
cout << buff;
system("PAUSE");
ありがとう、完璧に動作します! –