std::string erase用于删除最后一个字符。

4

我想在游戏中获取一些输入,并在按下退格键后从字符串中删除最后一个字母。我不确定应该使用text.end -1还是+1end来实现:

if (GetAsyncKeyState(VK_BACK))
    text.erase(text.end - 1, text.end);

3
end 是一个返回迭代器的方法,因此它必须是 text.end() - 1 - Slava
1个回答

10

std::string 实际上有一个 pop_back() 方法!所以你可以这样做:

if (GetAsyncKeyState(VK_BACK) && !text.empty()) { text.pop_back(); }

5
std::string 也有一个 empty() 方法,所以您不必检查 size() 是否为 > 0,例如: if (GetAsyncKeyState(VK_BACK) && !text.empty()) { text.pop_back(); } - Remy Lebeau
或者只需使用 text.size(),不需要 not - Slava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接