|
You last visited: Today at 00:25
Advertisement
Funktion kürzen
Discussion on Funktion kürzen within the C/C++ forum part of the Coders Den category.
06/09/2013, 12:15
|
#1
|
elite*gold: 0
Join Date: Jun 2013
Posts: 9
Received Thanks: 0
|
Funktion kürzen
Moin,
hat wer vielleicht eine Idee wie ich noch meine Funktion kürzen könnte?
Code:
std::string calculatePacketBuild(const std::string& packet)
{
std::string calculatedPacket;
char b;
for(auto it : packet)
{
b = (char)(it - 0x20);
if(b <= 0)
{
calculatedPacket += '1';
continue;
}
b = (char)((char)(b + 0xF3) - 0x2);
if(b <= 0)
{
calculatedPacket += '1';
continue;
}
b = (char)(b - 0xB);
if(b <= 0)
{
calculatedPacket += '1';
continue;
}
b = (char)(b - 0xC5);
if(b <= 0)
{
calculatedPacket += '1';
continue;
}
calculatedPacket += '0';
}
return calculatedPacket;
}
Ich finde das in diesem Zustand derbst hässlich.
MfG
|
|
|
06/09/2013, 12:35
|
#2
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Code:
#include <algorithm>
#include <iostream>
#include <string>
struct packet_functor
{
char operator()(char c) const
{
if((c -= 0x20) <= 0 || (c += 0xf3 - 0x2) <= 0 || (c -= 0xb) <= 0 || (c -= 0xc5) <= 0)
return '1';
return '0';
}
};
int main()
{
std::string s = "HIUEGIUDFTWZE8756345$%&/&)(§";
std::transform(s.begin(), s.end(), s.begin(), packet_functor());
std::cout << s << std::endl;
}
Falls es noch kürzer soll: Lambda benutzen. Endet aber im gleichen Code und sieht in dem Fall m.E. hässlicher aus.
|
|
|
06/09/2013, 13:12
|
#3
|
elite*gold: 0
Join Date: Jun 2013
Posts: 9
Received Thanks: 0
|
Quote:
Originally Posted by Schlüsselbein
Code:
#include <algorithm>
#include <iostream>
#include <string>
struct packet_functor
{
char operator()(char c) const
{
if((c -= 0x20) <= 0 || (c += 0xf3 - 0x2) <= 0 || (c -= 0xb) <= 0 || (c -= 0xc5) <= 0)
return '1';
return '0';
}
};
int main()
{
std::string s = "HIUEGIUDFTWZE8756345$%&/&)(§";
std::transform(s.begin(), s.end(), s.begin(), packet_functor());
std::cout << s << std::endl;
}
Falls es noch kürzer soll: Lambda benutzen. Endet aber im gleichen Code und sieht in dem Fall m.E. hässlicher aus.
|
Danke, so gefällt es mir.
Noch eine andere Frage, wozu braucht man überhaupt Lambda Funktionen? Ich weiß wie die funktionieren, aber verstehe den Sinn dahinter nicht.
MfG
|
|
|
06/09/2013, 13:15
|
#4
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Lambdas sind nur ein syntaktisches Schmankerl. Der erzeugte Code sollte dem hier gleichen, da das erzeugte Objekt im normalfall sowieso eliminiert und Methode inlined wird.
|
|
|
06/09/2013, 13:29
|
#5
|
elite*gold: 0
Join Date: Jun 2013
Posts: 9
Received Thanks: 0
|
Quote:
Originally Posted by Schlüsselbein
Lambdas sind nur ein syntaktisches Schmankerl. Der erzeugte Code sollte dem hier gleichen, da das erzeugte Objekt im normalfall sowieso eliminiert und Methode inlined wird.
|
Ich verstehe, dann bedanke ich mich nochmal bei dir und der Thread währe erledigt.
MfG
|
|
|
06/09/2013, 13:53
|
#6
|
elite*gold: 297
Join Date: Dec 2010
Posts: 1,129
Received Thanks: 1,687
|
Quote:
Originally Posted by Schlüsselbein
Code:
#include <algorithm>
#include <iostream>
#include <string>
struct packet_functor
{
char operator()(char c) const
{
if((c -= 0x20) <= 0 || (c += 0xf3 - 0x2) <= 0 || (c -= 0xb) <= 0 || (c -= 0xc5) <= 0)
return '1';
return '0';
}
};
int main()
{
std::string s = "HIUEGIUDFTWZE8756345$%&/&)(§";
std::transform(s.begin(), s.end(), s.begin(), packet_functor());
std::cout << s << std::endl;
}
Falls es noch kürzer soll: Lambda benutzen. Endet aber im gleichen Code und sieht in dem Fall m.E. hässlicher aus.
|
Kleine Ergänzung: Wenn man den String nicht modifizieren möchte, sondern eher einen zweiten mit den jeweiligen Ergebnissen füllen möchte, kann man std::back_inserter benutzen.
Das sieht dann etwa so aus:
Code:
std::string packet = "HIUEGIUDFTWZE8756345$%&/&)(§";
std::string result;
std::transform(std::begin(packet), std::end(packet), std::back_inserter(result), packet_functor());
std::cout << packet << std::endl << result << std::endl;
|
|
|
 |
Similar Threads
|
[S] USA.net E-mail Spammer (Proxy Funktion & Account-listen Abruf Funktion) [B] e*g
04/24/2013 - elite*gold Trading - 0 Replies
Hallo,
Ich Suche einen E-mail Spammbot der mit USA.net E-mail Adressen Arbeitet. den SMTP Herrauszufinden ist ja nicht Wirklich schwer. Er Sollte Proxy Funktionen haben (E-mail via Proxy versenden) Und er sollte eine liste mit Accounts (Format E-mail:Passwort) Einlesen und verwenden Können (Wenn eine E-mail nichtsmehr sendet wird eine 2te Genommen Also aus der Liste)
Hoffe ihr könnt mir da Weiterhelfen ^^ Kontakt Bitte per PN.
|
mod_rewrite hilfe - URL kürzen
01/04/2013 - Web Development - 4 Replies
Hallo, ich habe hier ein CMS was Automatisch die Links erstellt, wenn ich eine neue Seite erstelle. In meinem Fall hier habe ich eine Seite mit Regeln stehen.
Daer link wird von dem CMS wie folgt erstellt:
Domain.de
Ich möchte jetzt aber noch zusätzlich wenn man
http://www.domain.de/regeln
im Browser eingibt, dass man auf Domain.de geleitet wird.
Versucht habe ich es wie folgt:
|
Brüche kürzen C++ ?
02/16/2012 - C/C++ - 10 Replies
Hey Guyz.
Hat jemand von euch eine Class für das Kürzen von Brüchen in C++ ?
Meine Class sieht wie folgt aus:
class Bruch
{
public:
Bruch()
|
Musik Kürzen
05/11/2011 - Music - 3 Replies
Hey, Leute auf anfrage von nem friend zeig ich euch wie man musik kürzt.
Also ich mein das so wenn euer lied nur 4minuten geht die audio datei 5minuten dann kann das schon nerven :facepalm:
Wie man sie kürzt?Recht simpel.
Jeder von euch müsste den windows movie maker aufm pc haben.
Dann importiert ihr die gewünschte musik und geht auf die stelle wo eure musik vorbei geht.Dann drückt ihr auf trennen,Dann könnt ihr den rechten teil löschen da er ja keine musik beinhaltet.. dann noch auf film...
|
Cooldown kürzen?
07/15/2010 - 4Story - 20 Replies
Leute ich will mit bogenschütze pvp eqi uppen , aber man muss ja immer 90sek warten kann man das irgendwie verringern? hilfe wäre nett
|
All times are GMT +1. The time now is 00:26.
|
|