Hey ich habe mich an die Caesar-Verschlüsslung gesetzt und komm nicht weiter...
Das Problem ist das der keine Sätze verschlüsselt warum auch immer..
Da ich neu in C++ bin freu ich mich über Tipps aandd Tricks
Das liegt daran, dass operator>> von std::cin bis zum Leerzeichen einliest.
Ausserdem zum Code:
1. Benutz beim Parameter const std::string& statt std::string.
2. Benutz am besten direkt std::transform aus dem header 'algorithm'
3. Gewöhn dir das globale 'using namespace std;' ab
4. Prüfe generell beim Einlesen via std::cin:perator>> auf Erfolg
Code:
if(std::cin >> var) { // continue... }
5. Lass das 'fflush(stdin);' weg (ruft laut Standard undefiniertes Verhalten hervor)
6. statt 'exit == false' einfach '!exit'
Das liegt daran, dass operator>> von std::cin bis zum Leerzeichen einliest.
Ausserdem zum Code:
1. Benutz beim Parameter const std::string& statt std::string.
2. Benutz am besten direkt std::transform aus dem header 'algorithm'
3. Gewöhn dir das globale 'using namespace std;' ab
4. Prüfe generell beim Einlesen via std::cin:perator>> auf Erfolg
Code:
if(std::cin >> var) { // continue... }
5. Lass das 'fflush(stdin);' weg (ruft laut Standard undefiniertes Verhalten hervor)
6. statt 'exit == false' einfach '!exit'
Das ist mir auf den ersten Blick aufgefallen.
Gruß
Punkt 1 ist nicht notwendig, bzw. klappt mit dem Implementationsprinzip so gar nicht, es wird immer auf eine Kopie hinauslaufen, von daher ists einfach Wurscht. Das mit std::transform ist natürlich grundsätzlich schon auch eine gute Lösung:
^Ich habe auch erst gedacht, dass er mit der const Reference den Parameter meint, aber der Rückgabewert erscheint mir logischer.
@TE: "endl << endl" - ich nehme an, du willst damit eine neue Zeile erzeugen? endl leert gleichzeitig auch den Buffer, braucht also wohl ein bisschen mehr Performance. Ich würde da einfach << "\n\n" << text nehmen, das ist die Escape-Sequenz für newline.
Und Schlüsselbein rät normalerweise ganz gerne von getchar ab, da man möglichst C und C++ nicht blind vermischen sollte. std::cin.get() sollte da auch funktionieren.
Wenn du Sätze einlesen willst: std::getline(std::cin, DEINSTRING);, ich weiß gerade nicht, welchen Rückgabewert das gibt, aber gefühlt bekommst du wie bei std::cin einen Return-Wert, der nicht 0 sein sollte, wenn alles gut ist.
^Ich habe auch erst gedacht, dass er mit der const Reference den Parameter meint, aber der Rückgabewert erscheint mir logischer.
@TE: "endl << endl" - ich nehme an, du willst damit eine neue Zeile erzeugen? endl leert gleichzeitig auch den Buffer, braucht also wohl ein bisschen mehr Performance. Ich würde da einfach << "\n\n" << text nehmen, das ist die Escape-Sequenz für newline.
Und Schlüsselbein rät normalerweise ganz gerne von getchar ab, da man möglichst C und C++ nicht blind vermischen sollte. std::cin.get() sollte da auch funktionieren.
Wenn du Sätze einlesen willst: std::getline(std::cin, DEINSTRING);, ich weiß gerade nicht, welchen Rückgabewert das gibt, aber gefühlt bekommst du wie bei std::cin einen Return-Wert, der nicht 0 sein sollte, wenn alles gut ist.
Benutze da meistens einfach std::cin.sync nach einer Input operation, dann funktioniert der Stream wieder (clear nicht vergessen für die error flags!)
1. Benutz beim Parameter const std::string& statt std::string.
Ist wohl veraltet und sofern du einen string übergibst, der nicht const ist, wird, afaik auch eine temporäre Kopie erstellt. Habe im C++ Forum mal irgendwas darüber gelesen. Da gibts wohl eine bessere Alternative mit std::move, finde den Thread grade nicht mehr.
Ich habe auch erst gedacht, dass er mit der const Reference den Parameter meint, aber der Rückgabewert erscheint mir logischer.
Nein, ich habe schon den Parameter gemeint. Ihr habt aber recht, das ist in dem Fall eigentlich egal.
Deshalb würde ich hier wie schon gesagt direkt std::transform benutzen oder etwas im Stile von:
Code:
template <class InputIt, class OutputIt>
OutputIt encrypt(InputIt beg, InputIt end, OutputIt result, int chiffre);
basteln. Damit spart man sich nicht nur kopiererei, sondern kann auch die Funktion auf jeden Container anwenden.
Ist wohl veraltet und sofern du einen string übergibst, der nicht const ist, wird, afaik auch eine temporäre Kopie erstellt. Habe im C++ Forum mal irgendwas darüber gelesen. Da gibts wohl eine bessere Alternative mit std::move, finde den Thread grade nicht mehr.
Jo std::move verschiebt quasi den inhalt und hinterlässt ein leeres aber valides objekt.
Passt z.B. hier, also bei sowas sollte man dann by value übergeben:
Code:
void storeMe(object o) {
m_container.push_back(std::move(o)); // in den container moven
}
// object braucht natürlich move semantics damit das klappt!
object o;
storeMe(o); // copy ctor...
storeMe(std::move(o)); // move ctor...
// o ist nun "leer", bei nem string halt einfach kein inhalt mehr da, kann aber weiter verwendet werden
storeMe(object()); // move ctor weil temporary
Damit hast dann 0 kopien
Btw: Bei Rückgaben niemals mit std::move zurückgeben, das macht der Compiler automatisch, ihr stört damit nur NRVO. Die heutigen Compiler moven sowieso wo es nur geht ^^
[REQUEST] Caesar Casino 03/09/2013 - Facebook - 0 Replies Anyone have some cheats for Caesar casino ?
Caesar-Verschlüsslung Frage?! 03/08/2012 - C/C++ - 3 Replies Hey Epvp
Ich lerne grad C++ und bin grad bei den Strings im Buch kam ein Bespiel zur Caesar-Verschlüsslung und habe ein Frage zu einer Stelle im Code.
Der Code :
#include <iostream>
#include <string>
using namespace std;
[H] PSC Checker Verschlüsslung 10/07/2011 - Technical Support - 3 Replies Ich habe den PSC Checker von iNk benutzt jedoch wurde die Version deaktiviert.
Die Paysafecards sind in einer .bin verschlüsselt und komme jetzt nicht dran. kann mir jemand helfen?
Thread: http://www.elitepvpers.com/forum/epvp-coders-relea ses/1342527-release-paysafecard-manager-ink-2.html
Der typ schreibt auch nicht back -.-'
need help :(
Verschlüsslung ändern? 03/17/2011 - Metin2 Private Server - 6 Replies Guten Abend =)
Ich hätt da mal wieder ne frage:D
Ist jetzt ziemlich doof aber naja, hab mich damit auch noch nicht wirklich
beschäftigt.
Wie änder ich die verschlüsslung im file-achiver von Tim?
In seinem Theard hat er zwar geschrieben das die RootExtract.xml" und "RootPack.xml" ein beispiel code enthalten, allerdings konnte ich darin nichts finden.
Ich habe bereits die sufu genutzt und etwa 1.5 stunden im Theard nachgelesen ob da nicht i-was stehen könnte.
Entweder bin ich...
Verschlüsslung? nur wie 01/26/2011 - Metin2 Private Server - 11 Replies Hallo hab da mal eine frage wie kann ich meinen Client verschlüsslen das niemand mehr denn endpacken kann?
will auch nicht denn verschlüssler denn Puplic ist ambesten das ich es auch nimmer endpacken kann ist das einfachste weiß das jemand wie?
Hoffe ihr könnt mir hilfen!
mfg
holzi