Error \222 bei delimiters

  • Themenstarter Themenstarter blong1550
  • Beginndatum Beginndatum
B

blong1550

Hallo,

ich bin gerade dabei für find_first_of einen string delimiters festzulegen.
Code:
    string delimiters = " .,;:!?-\"\’()";
Allerdings bekomme ich einen Fehler vom Compiler, nämlich \222

Was soll dieser mir sagen, bzw. was könnte falsch sein?
 
Hi.

Ein Backslash leitet eine Escapesequenz ein. Es gibt keine \" Escapesequenz.
C++:
string delimiters = " .,;:!?-\\"\’()";
Gruß
 
In C gibt es die Escape-Sequenzen \" und \', und ich vermute, dass es in C++ auch so ist.. Wenn du allerdings sicher sein willst, dann gib das jeweilige Zeichen mit seinem oktalen oder hexadezimalen ASCII-Code als Escape-Sequenz an, z.B. \042 oder \x22 für das " und \047 bzw. \x27 für das '-Zeichen.

Wenn du mit find_first_of der string-Klasse arbeitest, wirst du wahrscheinlich öfters substr benötigen. Vielleicht erleichterst du dir das Leben, wenn du dir mit c_str einen C-String geben lässt und die Funktionen strcspn und strpbrk verwendest; du kannst dann einfach mit Zeigerarithmetik arbeiten, um im selben String weiterzusuchen, was möglicherweise schneller und/oder speicherschonender ist. Sie sind in string.h zu finden.

PS: Versuche mal herauszufinden, welche Zeichen den Fehler verursachen, indem du einzelne Zeichen bei der Definition von delimiters weglässt.
 
Zuletzt bearbeitet:
:D Ich glaube, ich verstehe.
Könnte es dann sein, dass das \222 in der Fehlermeldung der Oktalcode des falschen Zeichens ist?

PS: Vielleicht könnte auch die C-Funktion strtok für blong1550 nützlich sein. Gibt es wirklich keine Tokenizer-Klasse oder -Methode in C++?
 
Zurück