2014-05-23 26 views
17

Cách xóa ký tự đầu tiên và cuối cùng khỏi chuỗi std ::, tôi đã thực hiện đoạn mã sau.Xóa ký tự đầu tiên và cuối cùng C++

Nhưng mã này chỉ loại bỏ các ký tự cuối cùng

m_VirtualHostName = m_VirtualHostName.erase(m_VirtualHostName.size() - 1) 

Làm thế nào để loại bỏ các ký tự đầu tiên cũng?

+8

Mã đó sẽ phát triển nếu chuỗi trống. – PaulMcKenzie

+1

Loại m_VirtualHostName là gì? – LVBen

+0

@PaulMcKenzie vì vậy tôi phải xác thực trước, nếu VirtualHostName không trống. –

Trả lời

34

Vâng, bạn có thể erase() ký tự đầu tiên quá (lưu ý rằng erase() đổi các string):

m_VirtualHostName.erase(0, 1); 
m_VirtualHostName.erase(m_VirtualHostName.size() - 1); 

Nhưng trong trường hợp này, một cách đơn giản hơn là để có một chuỗi con:

m_VirtualHostName = m_VirtualHostName.substr(1, m_VirtualHostName.size() - 2); 

Hãy cẩn thận để xác thực rằng chuỗi thực sự có ít nhất hai ký tự trong nó trước tiên ...

+0

nó sẽ sụp đổ, nếu im chỉ có 2 ký tự? –

+0

@Prara: Có. C++ không đặc biệt thân thiện theo cách đó ;-) ** Chỉnh sửa **: Không, tôi đã đọc sai nhận xét của bạn. Nó sẽ sụp đổ nếu bạn có * nhỏ hơn * hai ký tự (0 hoặc 1). – Cameron

+1

@PutraFajarHasanuddin Nó sẽ khi bạn không có hoặc 1 ký tự trong chuỗi. Nó được ghi lại [ở đây] (http://en.cppreference.com/w/cpp/string/basic_string/erase). Chỉ thực thi dòng thứ hai khi ['size()'] (http://en.cppreference.com/w/cpp/string/basic_string/size) trả về ít nhất 1. – Appleshell

Các vấn đề liên quan