Hallo zusammen, ist es möglich, mit dem Präprozessor einen String zu beschneiden? Nehmen wir an, ich habe die lange Zeichenkette _VERSION_ und will nur die ersten 20 Zeichen davon haben. Viele Grüße W.T.
Nein, der Präprozessor kann kein String split. Warum geht sowas nicht:
1 | __attribute__((constructor)) void init_version_string() { |
2 | static char version_[21]; |
3 | snprintf(version_, sizeof(version_), "%s", _VERSION_); |
4 | }
|
?
ghl schrieb: > Warum geht sowas nicht: Es geht. "Es wäre nur schöner gewesen" , wenn sich das einfach in einem String hätte hinterlegen lassen. Danke für die Antwort! W.T.
In C++11 gehts: http://ideone.com/qeD0qD Der Compiler führt das Zuschneiden statisch zur Compile-Zeit durch. Die Variablen 'x', 'y' enthalten direkt den zugeschnittenen String (wie ein C-Array) (ohne dynamische Speicher-Verwaltung). Es wird nur der gekürzte String im Kompilat gespeichert (keine Speicherverschwendung), aber mit Null-Byte (könnte man auch weglassen). Zum Testen werden die Strings ausgegeben. Wenn du momentan C verwendest, kompiliere mit "g++ -std=c++11" statt "gcc" und der Code funktioniert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.