删除第一个和最后一个字符C++

Put*_*din 26 c++ string stdstring erase-remove-idiom

如何从std :: string中删除第一个和最后一个字符,我已经在做以下代码了.

但是这段代码只删除了最后一个字符

m_VirtualHostName = m_VirtualHostName.erase(m_VirtualHostName.size() - 1)
Run Code Online (Sandbox Code Playgroud)

如何删除第一个字符?

Cam*_*ron 48

好吧,你也可以erase()使用第一个字符(注意erase()修改字符串):

m_VirtualHostName.erase(0, 1);
m_VirtualHostName.erase(m_VirtualHostName.size() - 1);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,更简单的方法是获取子字符串:

m_VirtualHostName = m_VirtualHostName.substr(1, m_VirtualHostName.size() - 2);
Run Code Online (Sandbox Code Playgroud)

小心验证字符串实际上至少有两个字符...

  • 虽然`substr`在代码中看起来更干净,但它会触发额外的内存分配(可能或不重要).如果声明为:`str.erase(str.end() - 1),第一次擦除可能更简单; str.erase(str.begin());` (7认同)

Her*_*nán 6

我的 BASIC 解释器用

str->pop_back();
str->erase(str->begin());
Run Code Online (Sandbox Code Playgroud)

当然,我总是期望格式良好的 BASIC 样式字符串,所以assert如果不是,我将中止失败:

assert(str->front() == '"' && str->back() == '"');

只有我的两分钱。