[C++] Escapesequenzen auf Variable anwenden

Halle liebes HaBo,
ich habe folgendes Problem:

Ich lese Bytes als Komandozeilenparameter ein, um die Eingabe zu erleichtern lasse ich diese als \x Escapes angeben. In meinem Programm möchte ich diese nun unescapen:

Eingabe: \x0a\x4c\x33
Mein char array soll danach so aussehen.
meinCharArray[0] = 0a;
meinCharArray[1] = 4c;
meinCharArray[2] = 33;

Danke im Voraus :)
 
Das kannst du mit einem endlichen Automaten lösen: Du hast eine Zustandvariable die sagt worauf du gerade wartest. Diese kann man durch mehrere #defines oder ein enum umsetzen. Dann machst du ein switch auf diese Zustandsvariable und je nach Zustand prüfst du ob du das erwartete Zeichen bekommst und speicherst es ggf. Als Pseudocode:
Code:
enum stateVar {slash, char_x, digit1, digit2};
stateVar state = slash;
int pos = 0, charPos = 0;
switch(state) {
case slash:
    if(input[pos++] != '\')
        error();
    else
        state = char_x;
case char_x:
    if(input[pos++] != 'x)
        error();
    else
        state = digit1;
case digit1:
    meinCharArray[charPos++] = input[pos++];
    state = digit2;
case digit2:
    meinCharArray[charPos++] = input[pos++];
    state = slash;
}
Natürlich noch in digit1/2 prüfen, dass du auch nur Zeichen im Bereich 0...9,a...f bekommst :)

Edit: Statt mühsam das pro Zeichen zu machen kann man natürlich auch einfach den String aufspalten und dann mit stringstreams die Hexzahlen gleich in ints einlesen.
 
Zurück
Oben