Seite 1 von 1

[gelöst] Escape-Sequenz für Leerzeichen?

Verfasst: 21. April 2009 12:55
von Exasperation
Hallo! Ich schreibe ein Programm um eine bestimmte Zeichenfolge in beliebig vielen cpp hpp inl txt und sonstigen textbasierten Dateien zu finden. Klappt auch alles soweit super, nur bei einer Abfrage habe ich ein Problem... Ich möchte abfragen ob ein bestimmtes Zeichen in meinem eingelesenen String ein Leerzeichen ist! Also für die Abfrage von " kann ich beispielsweise \" benutzen, also die ganz normale Escape-Sequenz... Aber wie stell ich das bei einem Leerzeichen an? ' ' funktioniert z.B. nicht... Eine echte Escape-Sequenz habe ich auch nicht gefunden... Kennt jemand ne Möglichkeit?

Code: Alles auswählen

if( p_line.at(indicator+8) == ' ' ) // <--- Hier
			{
				sub_string = p_line.substr( begin + 2 );
			}

Verfasst: 21. April 2009 13:22
von FaS
Doch, das funktioniert so, dein Fehler muss woanders liegen. Gib doch vor dem if dein p_line aus, um zu schauen, was da überhaupt tatsächlich drinsteht.

Verfasst: 21. April 2009 13:34
von Exasperation
Ich hab schon durch debugged und in p_line steht schon das richtige drin.. Ich debug nochmal um genau zu sehen woran es scheitert... Werd dann wieder was posten...

Nur um mein Wissen zu erweitern: Gibts noch ne andere Möglichkeit außer: ' ' ?

Schonmal danke für die Hilfe :)

Verfasst: 21. April 2009 13:43
von FaS
QChar::at( x ) fragt das x+1. Zeichen ab, das ist klar, oder?
Wenn ja, dann stimmt wohl dein if-Zweig nicht.

Fall du auf alle Separatoren testen möchtest, welche zu den Unicode-Klassen
Zs, Zl und Zp (Space, Line, Paragraph) gehören: QChar::isSpace().
Falls du nur auf Tabs prüfen möchtest: \t; Zeilenumbrüche \n nur, wenn die Datei mit QIODevice::Text eingelesen wurde.

Verfasst: 21. April 2009 14:36
von Exasperation
FaS hat geschrieben:QChar::at( x ) fragt das x+1. Zeichen ab, das ist klar, oder?
Öhm, ich bin zwar heir im QT Forum, aber die Frage habe ich extra unter C++ Grundlagen gestellt, weil der Teil des Progs nichts mit QT zu tun hat ;) Das was ich hier habe ist ein std::at() für strings :)

Auf jeden Fall habe ich es nun rausbekommen, das ' ' war tatsächlich richtig und mein Fehler lag nur in der Erstellung meines Substrings, bzw der Stelle an der das geschah... Er wurde falsch geschnitten und in einer anderen Funktion, erzeugte dies einen Fehler ;)

Habe jetzt eine viel bessere Version geschrieben... Die Funktion verschiebt den Anfang des Substrings, bis es kein Leerzeichen mehr findet...

Code: Alles auswählen

while( p_line.at( begin ) == ' ' )
			{
				begin += 1;
			}