2014-10-29 15 views

Antwort

24

wenn str ist std::string oder ein anderer Standardbehälter von char, dann ist das

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

Wenn Sie die Zeichen der Zeichenfolge ändern möchten, benötigen Sie eine Referenz char & c anstelle eines Werts char c.

+0

hochgesetzt. Ich bin mir ziemlich sicher, dass er das sucht, aber ... In Python würde sein 'char' den Typ string haben, und in seinem' tu etwas' könnte er stringähnliche Operationen ausführen es. (Auf der anderen Seite konnte er das Zeichen in 'str' nicht ändern, da' char' eine ein Zeichen lange Teilzeichenfolge von 'std' wäre.) –

+0

OP sollte angeben, was er will, sonst sind die Antworten nicht präzise genug –

+0

@JamesKanze: In der Tat versuche ich nicht, die Python-Semantik exakt zu emulieren, denn das wäre wahrscheinlich eine schlechte Idee, selbst wenn ich Python kannte. Das ist nur "etwas, das einem String in Python ähnelt". –

12

Mit einem std::string es ganz einfach sein wird:

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

oder durch Bezugnahme in Fall, dass Sie es ändern ..

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

Wenn er es ändern will .. –

+1

@NeilKirk Ich glaube nicht, dass Sie die Zeichenfolge viel mit bearbeiten können Pythonschleife entweder. Da Sie C++ 11 verwenden, können Sie 'auto' und' auto & 'verwenden ... – matsjoyce

+1

@matsjoyce Aber warum? Das wäre nur eine Verschleierung. –

0

Einsatzbereich auf Basis for-Schleife wie diese

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

Ein nicht-null-terminiertes char-Array ist nicht das, worauf Leute normalerweise mit" string "verweisen. –

+1

Und etwas Einrückung/konsistente Formatierung würde wahrscheinlich nicht schaden. –

+0

sicher Sir !!!, ich werde beim nächsten Mal vorsichtig sein –