2014-10-29 19 views
8

C++ bir dize Traversing:Python içinde bir dizisini gezinmesi benzer bir şey arıyorum

yani ben C++ yapabilirsiniz nasıl

for char in str: 
    do something 

?

std::string myStr = "Hello"; 
for (char c : myStr) 
    std::cout << c; // Print out every character 

veya bunu değiştirmek istediğiniz takdirde referans olarak

..

std::string myStr = "Hello"; 
for (char& c : myStr) 
    c = 'A'; 
// mystr = "AAAAA" 
+2

gibi döngü tabanlı .. –

cevap

24

strstd::string ise:

oldukça kolay olacak bir std::string ile size

+0

Onun aradığı şeyin bu olduğuna eminim, ama ... Python'da, onun "char" türü bir dizgeye sahip olacak ve onun "bir şeyler yap" da, o. (Diğer taraftan, str'de karakteri değiştiremedi, çünkü "char" std'nin bir karakter uzun alt dizesi olurdu.) –

+0

OP ne istediğini belirtmeli, aksi halde cevaplar yeterince hassas değil. –

+0

@JamesKanze: Gerçekten de, Python semantiğini tam olarak taklit etmeye çalışmıyorum, çünkü Python'u bilmeme rağmen bu muhtemelen kötü bir fikir olurdu. Bu sadece "Python'da bir dizgenin geçişine benzer bir şey" dir. C++ 17'de –

12

ederiz veya char numaralı başka bir standart kapsayıcı, daha sonra

for (char c : str) { 
    // do something 
} 

Dizenin karakterlerini değiştirmek isterseniz, char c numaralı bir değer yerine char & c referansı isteyeceksiniz. O değiştirmek istediği takdirde

+0

.. –

+1

@NeilKirk Sana dize kadar bir kullanarak düzenleyebilirsiniz sanmıyorum python döngü de. C++ 11'i kullandığınız için 'auto' ve' auto & '... kullanabilirsiniz – matsjoyce

+1

@matsjoyce Ama neden? Bu sadece gizleme olurdu. –

0

kullanım aralığı ne str bağlıdır bu

char a1[5] = {'a', 'a', 'a', 'c'}; 
for (auto a : a1) 
    cout << a << endl; 
+3

Null olmayan sonlandırılmış bir char dizisi, insanların genellikle" string " –

+1

ile atıfta bulunduğu değil Ve bazı girinti/tutarlı biçimlendirme muhtemelen zarar vermez. –

+0

emin efendim!, Bir dahaki sefere dikkatli olacağım –

İlgili konular