SORU
24 Kasım 2008, PAZARTESİ


Std dönüştürmek için nasıl::küçük harf dize?

std::string Bir küçük harfe dönüştürmek istiyorum. Fonksiyonu tolower() ancak farkındayım geçmişte bu fonksiyon ile ilgili sorunlar vardı ve zaten bir dize ile kullanmak her karakter içinde dolaşmak gerekeceği pek uygun bir yer değil.

Zaman 0 çalışan bir alternatif var mı?

CEVAP
24 Kasım 2008, PAZARTESİ


http://notfaq.wordpress.com/2007/08/04/cc-convert-string-to-upperlower-case/:

#include <algorithm>
#include <string> 

std::string data = "Abc"; 
std::transform(data.begin(), data.end(), data.begin(), ::tolower);

Çok uzakta her karakter yineleme değil almak için gidiyoruz değil. Karakteri veya başka bir küçük harf, büyük harf olup olmadığını anlamanın yolu yok.

Eğer gerçekten nefret ediyorsan tolower(), burada tavsiye etmeyeceğim olmayan taşınabilir bir alternatif kullanın:

char easytolower(char in){
  if(in<='Z' && in>='A')
    return in-('Z'-'z');
  return in;
} 

std::transform(data.begin(), data.end(), data.begin(), easytolower);

Unutmayın ::tolower() tek bir başına-tek-bayt karakter değiştirme, hangi hastaliga uygun için birçok senaryo, özellikle eğer kullanarak bir multi-byte kodlama gibi UTF-8.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jabari Johnson

    Jabari Johns

    18 Ocak 2008
  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • OnlyFunClips

    OnlyFunClips

    16 ŞUBAT 2012