【发布时间】:2025-12-24 05:55:07
【问题描述】:
代码是从一个更复杂的程序简化而来的,但我面临的问题仍然出现在这种更简化的情况下。
所以我正在尝试使用指针从字符串中删除一个字符:
string str = "Hellxo World";
char *eraseHere;
for(int i = 0; i < str.length(); i++) {
if (str[i] == 'x') {
eraseHere = &str[i];
str.erase(*eraseHere);
}
}
我希望 str 成为 Hello World,但它却给出了 out_of_range 异常并停止了程序。
eraseHere 不是指向字符“x”的指针吗?我在 printf 中使用了 eraseHere 来尝试测试出了什么问题:
printf("%c\n",*eraseHere);
但它可以完美地打印该字符。
提前致谢。
【问题讨论】:
-
This
std::string::erasereference 可能会有所帮助。您传递一个迭代器或一个 index。并且'x'不是真正有效的索引,除非您的字符串长度超过120个字符(假设ASCII 编码)。