C-String in umgekehrter Reihenfolge zurückliefern
-
Hallo,
oder "in-place"void rev(char* str) { char* last = str + strlen(str); while (str < last) { char t = *str; *str++ = *--last; *last = t; } }
-
so kann man es natürlich auch machen. nur leider benutze ich VC++6
da gewöhnst du dir vernünftigen programmierstil schnell ab.
-
Sind wir hier im C-Forum oder was?
#include <string> #include <algorithm> std::string s("Hallo"); std::reverse(s.begin(), s.end());
Wenn der orig. String nicht geändert werden soll, kann man auch reverse_copy benutzen.
-
Sind wir hier im C-Forum oder was?
Nope. Aber zeigst du mir bitte die Stelle im C++ Standard, in der steht, dass nullterminierte char-Arrays verboten sind.
Ich bevorzuge persönlich natürlich ebenfalls std::strings. Nur:
1. schien der OP char* verwenden zu wollen.
2. gibt es genug Code auf der Welt der char* verwendet und damit ist es definitiv nicht verkehrt, wenn man lernt damit umzugehen.Zu deinem Codebeispiel:
In wiefern unterscheidet sich das von 0xdeadbeefs Lösung?
-
Sorry, 0xdeadbeefs Lösung hab ich nicht mitbekommen. Wurde von den C-Lösungen erschlagen.
Was die Arrays angeht: wir programmieren hier doch alle in C++ um das OO-Paradigma einzusetzen oder? Klar steht im Standard nicht drin, das man keine char-Arrays benutzen darf. Aber wenn es danach gehen würde... Und vielleicht weiß es der OP einfach nicht besser?
-
wir programmieren hier doch alle in C++ um das OO-Paradigma einzusetzen oder?
Keine Ahnung wer "wir" sind, aber ich für meinen Teil programmiere nicht deshalb in C++. Wenn OOP meine einzige Sorge wäre, würde ich in einer Sprache wie Smalltalk o.Ä. programmieren.
Ich schätze an C++ gerade die Flexibilität die es einem ermöglicht auch andere Ansätze zu verfolgen.
-
Konfusius schrieb:
so kann man es natürlich auch machen. nur leider benutze ich VC++6
da gewöhnst du dir vernünftigen programmierstil schnell ab.wen der bauer nicht schwimmen kann, sagt er, die badehose sei kaputt.
#define for if(false);else for #include <iostream> using namepsace std; int main(){ for(int i=0;i<10;++i) cout<<i<<' '; for(int i=10;i>0;--i) cout<<i<<' '; return 0; }
-
Vielen Dank für eure Beiträge, einige davon waren ja sehr nützlich wenn auch teilweise ein wenig zu heftig für den moment für mich ;-).
Grosser dank an Volkars C++ Kurs, dein Online Referenz hat mir schon oft gute Unterstützung geboten.
-
wenns nur um die ausgabe geht könnte man es auch so machen:
#include <iostream> #include <algorithm> #include <iterator> int main(){ char txt[] = "Hallo Velo"; std::reverse_copy(txt,txt+strlen(txt),std::ostream_iterator<char>(std::cout)); }
Was die Arrays angeht: wir programmieren hier doch alle in C++ um das OO-Paradigma einzusetzen oder?
irgendwie nicht(zumindest nicht pur).
-
Artchi schrieb:
Sind wir hier im C-Forum oder was?
Ja, und du bist mal wieder der Horst