2011-04-16 22 views
8

Bir + char (string.at(i)) C++ içinde boşluk olup olmadığını kontrol etmek istiyorum. Bunu nasıl kolayca yapabilirim?string.at (i) bir boşluk olduğunu kontrol edin C++

Bu kod örneğini aldım ve bir şeyle _____ değiştirmeyi düşünüyordum, ama ne olduğunu bilmiyorum. ' ' ile denedim, ancak işe yaramadı. C göç

for(int i = 0; i < string.length(); i++) 
{ 
    if(string.at(i) == _________) 
    { 
     //do something 
    } 
} 
+0

'dize [i] == 'İstersen '', çalışması gerekir çok basit çek . –

+2

Burada 'at' kullanmanın bir nedeni yok çünkü indeksin geçerli olduğunu biliyorsunuz. – GManNickG

+0

@muntoo: boşluk, yalnızca beyaz boşluk karakteri değil. –

cevap

12
#include <cctype> 

if (isspace(string.at(i))) 
+0

Teşekkürler, işe yaradı =) – user709712

2

pişmanlık duymayan C programcıları ++ yarı otomatik kullanır:

#include <cctype> 

if (std::isspace(string.at(i))) 
    ... 

Hatta C++ programcıları için doğru olması oldukça muhtemeldir.

+0

Seni 11 saniyede yeniyorum. – dan04

+0

@ dan04: Bunu farkettim. Aferin! –

+0

Teşekkür ederim bay =) – user709712

5

== [bir şeyler] yerine aşağıdakileri yapın: if (isspace(string.at(i)) (veya std::isspace'u kullanmayı tercih edebilirsiniz).

Düzenleme: 'un yaptıklarına bağlı olarak boşluk karakterleriyle (veya başka bir şeye ne gittiğinize bağlı olarak) bir algoritma kullanmak isteyebilirsiniz. Kaldırılan tüm boşluk karakterleri ile dizinin bir kopyasını oluşturmak isterse sadece örneğin şunu kullanabilirsiniz:

std::remove_copy_if(s.begin(), s.end(), std::back_inserter(new_string), isspace); 
+0

Teşekkür ederim çok fazla =) – user709712

İlgili konular