2011-01-10 18 views
2

Mögliche Duplizieren:
C++ Reverse Arrayein Zeichen-Array umkehren

Wie kann ich ein Zeichen-Array umkehren? Wie folgt aus:

char word1[10] = "this"; 
char word2[10] = word1[10] // in reverse 
cout<<word2; // I want it to output "siht" 
+2

was Array Worttyp ist? – XAder

+0

Welche Sprache verwenden Sie? – Badr

+0

@moon: Der Tag schlägt C++ vor;) – jwueller

Antwort

3

Wie über eine einfache Schleife (da ich weiß nicht, die genaue Art der word1 und word2)?

for (int i = 0, k = 9; i < 10; i++, k--) { 
    word2[k] = word1[i]; 
} 

ich sehr empfehlen, dass Sie std::string anstelle von char. Es gibt viele Antworten darauf, wie man das mit std::string hier macht.

+0

Wenn ich cout schreibe << word2; es gibt mir die Adresse nicht das Wort – mira

+0

das war eigentlich eine gute Idee, ich habe es mit Char Array arbeiten – mira

+0

Nicht korrekt, da es wahrscheinlich Müll (nicht initialisierte Indizes auf dem ursprünglichen Array) bis es \ 0, dann gedruckt wird stoppt. – jpinto3912

8
std::string word1 = "this"; 
std::string word2 = word1; 
std::reverse(word2.begin(), word2.end()); 
std::cout << word2; 
+0

ich weiß, es mit string zu tun, aber dieses wusste ich nicht, thx – mira

+0

@mira: Welcher typ _ist_ es, wenn nicht 'string'? – jwueller

+0

@elusive es ist char word1 [10] – mira

2

Verwenden Sie eine umgekehrte String-Funktion, um dasselbe durchzuführen.

3

würde ich so etwas wie die folgende Gefahr:

  1. Kopieren word1 zu word2, std::copy
  2. std::reverse mit mit word2

zu beenden beginnen und jetzt word2 enthält Umgekehrt kann nicht sag mehr ohne Typen zu kennen.

+2

std :: reverse_copy tut beides – ronag

+0

@ronag, es war dort vor meinen Augen, und ich vermisste es .. :) – Nim

+0

Geschichte meines Lebens :) –

0

Wenn word1 und word2 char-Arrays sind, dann nope. Wenn stattdessen word1 und word2 eine Art von Objekt mit einer Kapazität von 10 wären, könnten Sie den Zuweisungsoperator einfach überschreiben.

0
int main(int, char**) { 
    std::string word1 = "beef"; 
    std::string word2(word1.rbegin(), word1.rend()); 
    std::cout << word2; 
} 

http://ideone.com/drunA

0
std::reverse_copy(word1, word1+10, word2); 
+0

Das würde das nachfolgende \ 0 umkehren, so dass es das erste Zeichen ist. Das Ergebnis sollte offensichtlich sein. – MSalters

+0

In der Tat. Aber das scheint im OP-Fall kein Problem zu sein ... als er eine Antwort akzeptierte, die dasselbe tut. – ronag