C ++从字符串中删除字符
题
我目前正在尝试从C ++中的文本字段实现删除字符。如果用户登陆BackSpace,则执行以下代码。目前没有光标,它应该删除最后一个字符...
if (mText.length() > 0){
mText.erase( mText.length() - 1, 1);
// mText.resize(mText.length() - 1);
}
这是第一次效果很好,但是如果您再次击中Backspace,则不会删除任何内容。
我打印了 mText.length()
它表明长度永远不会改变。我试过了 resize()
字符串,它可以正常工作,但是我第一次击中backspace,它会删除 2 人物。
我希望有人可以解释这种行为并帮助我解决问题。我对记忆分配了解不多,所以请对我耐心;)
谢谢
Opatut
解决方案 3
我使用GDB发现了我的问题。我发现隐藏 \b
删除最后一个字符后,它添加到我的字符串中。它实际上代表了背景,但没有解释。感谢您的帮助!
"Roflcopt\b"
其他提示
根据 这, ,带有单个size_t参数的String.erase将从指定位置删除所有字符的所有字符。可以为要删除的字符数提供第二个size_t参数。
我按预期检查了这项工作 http://www.ideone.com (看 这里),还检查了该字符串:: length()按预期工作。
我认为问题在其他地方。
为什么不尝试 if(!mText.empty())mText = mText.substr(0, mText.length()-1);
?
不隶属于 StackOverflow