"b"作为字符添加到字符串中
"" is added to the string as a character
在下面的代码中,"\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;
}
}
当您获得退格键时,您需要"物理"地从字符串中删除最后一个字符:
while (true) {
c = _getch();
if (c=='r') {
break;
}
if (c=='b') {
cout<<"b"<<" "<<"b";
if (s.length() > 0) {
s = s.substring(0, s.length()-1);
}
}
else {cout<<"*"; s=s+c;}
}
作为优化,我们可以修剪s
而不是重新分配,正如 Jason 所建议的那样:
s.resize(s.size() -1);
(当我们使用它时,我们可以将s.length()
(或s.size()
)保存到局部变量中以避免额外的调用 - 假设编译器知道 std::string,还没有这样做)。
for(char c=_getch(); c!='r'; c=_getch())
if(c=='b')
mystr.pop_back();
else
mystr.push_back(c);
相关文章:
- 如何将字符串添加到布谷鸟过滤器?
- 将常量字符串添加到非常量字符串是否会给出常量字符串
- 如何在C++中为字符串添加字符?
- 在特定位置为字符串添加空格
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 如何使用函数将字符串添加到向量中
- 如何在 c++ 中将字符串添加到动态数组?
- 向字符串添加字符
- 向字符串添加位值
- 如何从用户那里接收多个字符串并将这些字符串添加到 c++ 中的数组中?
- 字符串添加数字 C++
- std::字符串添加到字符*
- C++ 向字符串添加"u"
- JSONCPP正在向字符串添加额外的双引号
- C 将N字符串添加到字符串流中
- 以简单且更少的代码方式将字符串添加在一起
- 字符串添加或减法操作员
- 将字符串添加到2D数组并显示COUT消息(没有错误消息?)的错误
- 如何使用递归向字符串添加逗号