【发布时间】:2015-06-23 02:58:07
【问题描述】:
我正在开发我自己的名为 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] = ' ';
}
}
this->c_str() 只是返回对象持有的当前字符串,这是为了 防止失败,但我无法通过第一个 for 循环, temp[i] = ' ' 只是抛出一个异常,我完全不知道为什么。
哦,是的,我知道我的函数并没有删除 temp 和更多的东西,但这还没有实现,因为我试图让 for 循环首先工作。
通过 makign 更多功能修复编辑(从已经创建的 PString 中 makign 一个新的 PString) 还使用了 memcpy 而不是仅仅做一个简单的等号运算符
【问题讨论】:
-
“substr”是“substring”,而不是“substract”。它返回一个 new 字符串。
-
试试
strcpy(temp,c_str());... -
@OskarDahlberg 如果您的目标是删除个字符,为什么还要创建一个新字符串?这在很多方面都是错误的。
-
行
string = "A string = a string";是如何实现的?您是只保存一个指向所提供字符串的指针,还是复制该字符串?