Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

NoName

Treue Seele

  • »NoName« ist der Autor dieses Themas

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

1

20.09.2003, 20:34

String in Ausdruck aus Quellcode umwandeln

Hallo!

Gibt es ein Makro, das die Anführungszeichen am Anfang und am Ende eines Strings entfernt, das also die Wirkung von "#" wieder aufhebt? Zum Beispiel:

Quellcode

1
2
3
cout << STRING_IN_AUSDRUCK_UMWANDELN (""Teststring"");
//soll gleiche Wirkung haben wie:
cout << "Teststring";

Lephro

Frischling

Beiträge: 66

Wohnort: Dortmund

Beruf: Schüler

  • Private Nachricht senden

2

20.09.2003, 21:21

Probier es doch aus !!!! Oder hab ich das "?" falsch verstanden !?
Everything that has a beginning has an end

NoName

Treue Seele

  • »NoName« ist der Autor dieses Themas

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

3

20.09.2003, 21:42

??? Offenbar ja. Ich suche ein Makro (STRING_IN_AUSDRUCK_UMWANDELN steht nur für dieses Makro), dass genau entgegengesetzt wie # wirkt! :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

20.09.2003, 23:07

Wenn ich Dich richtig verstehe, dann gibt es das, was Du suchst, nicht. Denn es würde erfordern, das Programm zur Laufzeit teilweise neu zu kompilieren, wenn der Parameter des Makros zur Kompilierzeit nicht bekannt ist.
Meinst Du sowas hier?

Quellcode

1
2
3
4
5
6
7
8
int zahl = rand() % 3;

char* p_befehl;
if(zahl == 0) p_befehl = "printf(\"Hallo!\");";
else if(zahl == 1) p_befehl = "int i = 100; i++;";
else p_befehl = "getch();";

STRING_IN_AUSDRUCK_UMWANDELN(p_befehl);


Falls ja, dann geht das - wie gesagt - auf keinen Fall.

Jens

Treue Seele

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

5

20.09.2003, 23:12

mich würde sehr interessieren, warum

also wenn Du einen String in einen Ausdruck wandeln willst, dann frage ich micht, warum Du nicht den Ausdruck gleich hinschreibst.
Oder hast Du die Ausdrücke in den Ressourcen stecken?
Suchst Du so etwas, wie die eval-Funktion in JavaScript?
Bis später...

6

21.09.2003, 01:19

Nein sowas gibbet nett. Es würde auch irgendwie keinen Sinn ergeben, einen String in Code zu verwandeln und das noch vor dem kompilieren.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Jens

Treue Seele

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

7

21.09.2003, 02:09

in C++ net, aber...

in C++ macht es wirklich keinen Sinn, aber stell Dir vor, Du willst einem Formular einer Webseite Daten in einem Feld übergeben, welches Du noch gar nicht kennst oder eine Funktion aufrufen, die in sich in einem nicht bekanntem Frame befindet... Da hilft eval (JavaScript). Denn in JavaScript hat man nicht andere Möglichkeiten, wie in C++.

Wolln mal sehen, was er eigentlich will... :roll:
Bis später...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

21.09.2003, 08:44

Jo, C++ ist ja normalerweise keine Interpreter-Sprache.

NoName

Treue Seele

  • »NoName« ist der Autor dieses Themas

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

9

21.09.2003, 11:27

Zitat von »"David Scherfgen"«

Wenn ich Dich richtig verstehe, dann gibt es das, was Du suchst, nicht. Denn es würde erfordern, das Programm zur Laufzeit teilweise neu zu kompilieren, wenn der Parameter des Makros zur Kompilierzeit nicht bekannt ist.
Meinst Du sowas hier?

Quellcode

1
2
3
4
5
6
7
8
int zahl = rand() % 3;

char* p_befehl;
if(zahl == 0) p_befehl = "printf(\"Hallo!\");";
else if(zahl == 1) p_befehl = "int i = 100; i++;";
else p_befehl = "getch();";

STRING_IN_AUSDRUCK_UMWANDELN(p_befehl);


Falls ja, dann geht das - wie gesagt - auf keinen Fall.


Nein, so meinte ich dass nicht. Nach meiner Vorstellung würde

Quellcode

1
STRING_IN_AUSDRUCK_UMWANDELN(p_befehl);

gar nicht funktionieren, denn p_befehl hat ja gar keine Anführungszeichen, die entfernt werden könnten. Wie gesagt, es soll ja auch ein Makro sein, dass auf Textbasis arbeitet und keine Funktion (was ja gar nicht funktionieren könnte).

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

21.09.2003, 11:35

Warum schreibst Du den Ausdruck nicht direkt hin? Warum dieser Umweg mit dem Makro?

Werbeanzeige