Forumlar

Mac C++ string sınıfı - büyük/küçük harfe duyarsız karşılaştırma?

T

erime

Orijinal afiş
4 Aralık 2006
Katy, Teksas
  • 8 Haz 2007
Çevrimiçi bir referansa (cppreference.com) ve C++ kitabıma baktım, ancak bir dize duyarsız karşılaştırma () bulamıyorum. Kesinlikle C-String büyük/küçük harf duyarsız karşılaştırmalar vardır, ancak varsa bir C++ karşılaştırması kullanmayı tercih ederim.

(Artı, şimdi onu bulma görevindeyim...)

Teşekkürler, Todd T

erime

Orijinal afiş
4 Aralık 2006


Katy, Teksas
  • 8 Haz 2007
Sanırım tüm boşlukların (X'20') ihtiyaç duyduğumdan daha uzun olduğu bilinen bir diziye sahip bir bit kümesi VEYA kullanabilir ve daha sonra küçük harf karşılaştırması için test edebilirim ...

Anlıyorum

25 Ekim 2004
  • 8 Haz 2007
Neredeyse inancın ötesinde, ancak standart C++ kitaplığının büyük/küçük harfe duyarsız olduğuna inanmıyorum.

Yerel ayarlar hakkında endişelenmek istemiyorsanız veya endişelenmeniz gerekiyorsa, o zaman:
_stricmp( str1.c_str(), str2.c_str() )
En basit çözümdür (aynı zamanda oldukça verimlidir).

Yerel ayarlar işleri biraz karmaşıklaştırır (bunu bu kadar karmaşık hale getiren gerçekten standart kitaplığın eksiklikleridir).
Yerel ayarlarla ilgilenen bir şey için bir bağlantı bulabilecek miyim bir bakalım...
Işte bir tane: http://lafstern.org/matt/col2_new.pdf
Ne hakkında konuştuğunu gerçekten biliyor mu bilmiyorum ama sanki biliyormuş gibi geliyor. Sorunu anlayabilmeniz için bir süre bu konuda devam ediyor, ancak en alta atlayabilir ve en iyi çözümü için son kod bloğuna göz atabilirsiniz. T

erime

Orijinal afiş
4 Aralık 2006
Katy, Teksas
  • 9 Haz 2007
Teşekkürler iSee. Evet, muhtemelen haklı. Ancak kendi amaçlarım için 7 bitlik ASCII karakter kodlarıyla çalışacağım ve bu kod yığınının yeterince iyi olacağını düşünüyorum.

Onayınız için teşekkürler - sadece onu kaçırmadığımı gördüğüme sevindim.

Todd

Kod: |_+_| T

erime

Orijinal afiş
4 Aralık 2006
Katy, Teksas
  • 10 Haz 2007
iSee şunları söyledi: Yerel ayarlar hakkında endişelenmek istemiyorsanız veya buna ihtiyacınız varsa, o zaman:
_stricmp( str1.c_str(), str2.c_str() )
En basit çözümdür (aynı zamanda oldukça verimlidir).

Tamam pes ediyorum. nereden buldun _strimp ?

Todd İÇİNDE

wittegijt

18 Şub 2007
Eindhoven
  • 11 Haz 2007
toddburch dedi ki: Tamam, pes ediyorum. nereden buldun _strimp ?

Todd

Windows'la ilgili bir şey. Unix kitaplıkları strcasecmp kullanır, içinde .

Wittegijt.

Anlıyorum

25 Ekim 2004
  • 11 Haz 2007
toddburch dedi ki: Tamam, pes ediyorum. nereden buldun _strimp ?

Todd

Tamam, bunu oraya attığım için üzgünüm.

Standart C kitaplığının bir parçası olduğunu düşündüm, ama değil. C kütüphanesinin çeşitli uygulamalarında, gayri resmi olarak farklı isimler altında görünür. Bu nedenle, büyük/küçük harfe duyarlı olmayan bir karşılaştırma da resmi C kitaplığının resmi bir parçası değildir. Tanrım. Çok büyük bir eksiklik gibi görünüyor. VS altında, _stricmp() veya stricmp()'dir, Mac için CodeWarrior altında stricmp() veya strcasecmp()'dir ve OS X 10.4/Xcode altında strcasecmp()'dir.

Bir düşününce, baştaki alt çizgi bana ipucu vermiş olmalıydı.

Sanırım C standardına uymak istiyorsanız, bir döngüde tolower() (veya toupper()) kullanarak kendinizinkini uygulamalısınız.

Bir ilk geçişin olabileceğini görelim (Bu, kafamın üstünde değil, test edilmemiş kod):
Kod: |_+_|
Her neyse, yine de, kötü tavsiye için özür dilerim. CodeWarrior günlerinden beri OS API'sinden (CFString, vb.) kaçınmak istediğim Mac OS X'te gerçekten çok fazla C/C++ kodlaması yapmadım sanırım... T

erime

Orijinal afiş
4 Aralık 2006
Katy, Teksas
  • 11 Haz 2007
Ahhhha. Mantıklı. Wittegijt & iSee'ye teşekkürler. 'Ansiklopedi C'mi (Sybex, 1991) okuyordum ve Microsoft'un standart olmayan tüm anahtar sözcüklerinin (veya en azından birçoğunun) hepsinin de ilk karakter için bir alt çizgisi var. Bana haber vermeliydin.

tamam, şimdi strcasecmp() . Kullandığım cppreference.com web sitesi yalnızca standart C/C++ gibi görünüyor. Mac OS X XCode'a özel bir referans sitesi için googledim ve bir tane bulamadım. İyi bir Mac OS X C++ referans web sitesi nedir? Veya bir yerde XCode yardımında yerleşik bir C++ referansı var mı ve ben onu bulamadım? Ya da, tüm bunlar başarısız olursa, benim de kaçırdığım Apple Geliştirme Merkezi'nde bir tane var mı?

İstendiğinde indirip yüklediğim XCode disk görüntüleri ne kadar büyük olursa olsun, orada kesinlikle bir dil referansı vardır - yani, başlangıçta indirdiğim Java öğeleri BÜYÜK idi.

Todd

Krevnik

8 Eylül 2003
  • 11 Haz 2007
toddburch dedi ki: Tamam, şimdi strcasecmp() . Kullandığım cppreference.com web sitesi yalnızca standart C/C++ gibi görünüyor. Mac OS X XCode'a özel bir referans sitesi için googledim ve bir tane bulamadım. İyi bir Mac OS X C++ referans web sitesi nedir? Veya bir yerde XCode yardımında yerleşik bir C++ referansı var mı ve ben onu bulamadım? Ya da tüm bunlar başarısız olursa, benim de kaçırdığım Apple Geliştirme Merkezi'nde bir tane var mı?

Orada, ancak POSIX katmanındaki C işlevlerini aştığını düşünmüyorum, yalnızca Apple'ın POSIX'e yaptığı tüm eklemeler. Bu işlevlerin bazılarında kılavuz sayfalarına erişmek için terminali kullanabilirsiniz. 'man strcasecmp' sizi bu işlevden bahseden sayfaya götürecek ve nasıl kullanılacağını açıklayacaktır.

Anlıyorum

25 Ekim 2004
  • 11 Haz 2007
Xcode'da dolaşırken bu sayfaya bir bağlantı buldum:

http://developer.apple.com/documentation/Darwin/Reference/ManPages/index.html

bu, C kitaplığı işlevleri de dahil olmak üzere OS X kılavuz sayfalarındaki her şey için bir içindekiler tablosudur.

Xcode başvuru kitaplığı, diğer kaynaklara ek olarak kılavuz sayfalarına da erişir, bu nedenle bunların tümü Xcode aracılığıyla kullanılabilir (her zaman 'API Referansında Seçili Metni Bul' kullanırım).

Görünüşe göre C işlevleri 3. bölümde yer alıyor. Görünüşe göre her işlevin belgeleri, işlevin hangi standarda uyduğu hakkında bazı bilgiler veren bir 'standart' veya 'geçmiş' bölümü içeriyor. Görünüşe göre strcasecmp(), uyumluluk nedenleriyle 'string.h'den 'strings.h'ye taşındı. Bunun tam olarak ne şekilde uyumlu olduğundan emin değilim. Sanırım bu, standart olmayan işlevlerin string.h'de görünmemesi gerektiği anlamına geliyor, bu yüzden onu farklı bir başlık dosyasına taşıdılar. T

erime

Orijinal afiş
4 Aralık 2006
Katy, Teksas
  • 11 Haz 2007
Bu harika bir referans sayfası! Böyle bir bilginin orada bir yerde olduğunu düşündüm!