17 EYLÜL 2008, ÇARŞAMBA
Std boşluk::Kaldır C string
C bir dize boşluk kaldırmak için tercih edilen yolu nedir ? Tüm karakterleri döngü ve yeni bir dize inşa edebileceğini, ama orada daha iyi bir yolu var mı?
CEVAP
17 EYLÜL 2008, ÇARŞAMBA
Yapılacak en iyi şey algoritması remove_if
ve isspace: kullanmaktır
remove_if(str.begin(), str.end(), isspace);
Şimdi algoritma konteyner(sadece değerleri değiştirin) değişimin kendisi değil, aslında değerlerini ve şimdi olması gereken yerde bir işaretçi karıştırır etrafında döner. Dize aramak zorundayız::aslında konteyner uzunluğunu değiştirmek için silme:
str.erase(remove_if(str.begin(), str.end(), isspace), str.end());
Ayrıca remove_if verilerin bir kopyasını en fazla yapacak dikkat etmelisiniz. Burada örnek bir uygulama:
template<typename T, typename P>
T remove_if(T beg, T end, P pred)
{
T dest = beg;
for (T itr = beg;itr != end; itr)
if (!pred(*itr))
*(dest ) = *itr;
return dest;
}
Bunu Paylaş:
Nasıl otomatik olarak tüm beyaz boşluk...
Birden çok boşluk ve yeni satır Dize i...
boşluk içeren bir python string doldur...
Ekstra düğmesi/boşluk doldurma Kaldır ...
Python string kullanarak boşlukları Te...