Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 00:25

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Funktion kürzen

Discussion on Funktion kürzen within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #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
inc_p0int is offline  
Old 06/09/2013, 12:35   #2
 
Schlüsselbein's Avatar
 
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.
Schlüsselbein is offline  
Thanks
1 User
Old 06/09/2013, 13:12   #3
 
elite*gold: 0
Join Date: Jun 2013
Posts: 9
Received Thanks: 0
Quote:
Originally Posted by Schlüsselbein View Post
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
inc_p0int is offline  
Old 06/09/2013, 13:15   #4
 
Schlüsselbein's Avatar
 
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.
Schlüsselbein is offline  
Thanks
1 User
Old 06/09/2013, 13:29   #5
 
elite*gold: 0
Join Date: Jun 2013
Posts: 9
Received Thanks: 0
Quote:
Originally Posted by Schlüsselbein View Post
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
inc_p0int is offline  
Old 06/09/2013, 13:53   #6
 
Raz9r's Avatar
 
elite*gold: 297
Join Date: Dec 2010
Posts: 1,129
Received Thanks: 1,687
Quote:
Originally Posted by Schlüsselbein View Post
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;
Raz9r is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.