008
30.11.2009, 01:24 Uhr
Hans
Library Walker (Operator)
|
Hi,
wieso 9 verschiedene Trennzeichen? - Eigentlich müssten für Tabellen doch zwei ausreichen: eines das die Zellen bzw. Spalten trennt, und eines fürs Zeilenende.
Zitat: |
"ASCII-Code >= 128" wie würde das genau aussehen? char c = 'x'; //x?
|
Naja, nicht ganz. Eher so:
C++: |
unsigned char c; ... c = 'x' + 128; ... if ((c&127)>0) // Code ist >= 128
|
Wenn Du allerdings mit noch mehr Trennzeichen hantieren willst, ist der Vorschlag mit den Escape-Zeichen sehr gut. Dann schreibst Du einfach den ASCII-Code 27 = ESC = Escape und ein weiteres Zeichen, dessen Bedeutung Du selbst definierst, in die Daten rein, und kannst sie entsprechend auswerten. Das könnte etwa so aussehen:
C++: |
unsigned char inputline[100]; int i;
// Trennzeichenabfrage if (inputline[i]==27) // Escape { if (inputline[i+1]==Q1) // erstes selbst definiertes Trennzeichen? ... // tue was else if (inputline[i+1]==Q2) // zweites selbst definiertes Trennzeichen? ... // tue was anderes // alle Varianten durch } else // kein Escape // tue was damit
|
Hier gehe ich davon aus, das Du die Tabelle zeilenweise in den Speicher bzw. einen Puffer holst, und auswertest. Den Eingabepuffer hab ich inputline genannt. Q1 und Q2 sind Bezeichner für die selbst definierten Trennzeichen, die für irgendwelche Zahlenwerte stehen.
Bei dieser Vorgehensweise wirst du die Tabelle allerdings nicht mehr problemlos mit Standardfunktionen einlesen bzw. schreiben können, die auf Strings spezialisiert sind. Es empfiehlt sich dabei, die Datei als Binärdatei zu behandeln, weil dadurch keine Zeichenanpassungen vorgenommen werden, wie sie bei Textdateien auftreten können.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |