c++ - "\b"作为字符添加到字符串中

标签 c++

在下面的代码中,“\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/

相关文章:

c++ - 是否可以使用基类构造函数使用派生类将值初始化为基类私有(private)成员?

c++ - 停止共享库链接以删除未使用的类

java - "isNaN(INFINITY)==false"是错误的

c++ - 错误 C2039 : 'chrono' : is not a member of 'std'

c++ - C++ 中的模板类,列表示例

c++创建程序在后台运行

c++ - 带有 uri::uri 的 cpp-netlib 请求

java - 无法打开包含文件 : 'jni.h' : No such file or directory

python - PyArray_SimpleNewFromData 示例

c++ - 帮助解决堆栈溢出问题!