在下面的代码中,“\b”从字符串中删除了一个字符,但它增加了它的大小,就好像该字符可以在其中但不可见一样。
while (true) {
c = _getch();
if (c=='\r') {break;}
else if (c=='\b') { cout<<"\b"<<" "<<"\b"; s+="\b \b"; }
else {cout<<"*"; s=s+c;}
}
例如这个字符串的大小(abc"\b"d),“c被删除并替换为d”,仍然是5。
我想知道在这种情况下如何有效地处理退格键。
最佳答案
如果你正在一个字符一个字符地读入一个字符串,你可以这样做:
std::string mystr;
while (true) {
c = _getch();
if (c=='\r') {break;}
if(c == '\b')
{
// This will remove last character from your string
if(mystr.size () > 0)
{
cout<<"\b"<<" "<<"\b";
mystr.resize (mystr.size () - 1);
// or mystr.pop_back() in C++11
}
}
else
{
cout<<"*";
mystr += c;
}
}
关于c++ - "\b"作为字符添加到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18774297/