我目前正在尝试用 C++ 实现从文本字段中删除字符。如果用户按下 Backspace,则执行以下代码。当前没有光标,它应该只删除最后一个字符...
if (mText.length() > 0){
mText.erase( mText.length() - 1, 1);
// mText.resize(mText.length() - 1);
}
第一次工作正常,但如果您再次按 Backspace,它不会删除任何内容。
我打印了mText.length()
,它显示长度永远不会改变。我尝试resize()
字符串,它工作正常,但是当我第一次按退格键时,它删除了2个字符。
我希望有人可以解释这种行为并帮助我解决问题。我对内存分配不太了解,所以请耐心等待;)
谢谢
oput
最佳答案
根据this 、带有单个 size_t 参数的 string.erase 将删除从指定位置到字符串末尾的所有字符。可以提供第二个 size_t 参数来表示要删除的字符数。
我使用 http://www.ideone.com 检查了它是否按预期工作。 (查看 here )并检查 string::length() 是否按预期工作。
我认为问题出在其他地方..
关于C++ 从字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704388/