Umgang mit BINARY, ASCII, UTF8, etc.



  • Abend!

    Wenn ich mit boost::asio Daten empfange die entweder Binärdaten sein können oder auch Textdaten (ASCII, UTF8, UTF16, UTF32), wie müsste dann der Buffer aussehen, damit keine Daten verloren gehen?
    Denn ASCII ist ja kleiner als UTF8, wenn ich nun ein std::vector<char> benutze, gehen ja Daten verloren oder nicht? Habe ich einen Denkfehler?



  • Dann werden die Bytes der Zeichen auf die entsprechende Anzahl an char's aufgeteilt. (1 char = per Definition 1 Byte) Das bedeutet, dass du dir dann selbst aus den char's wieder deine wchar_t's, oder welchen Datentypen auch immer du haben möchstes, "zusammenbauen" musst.



  • 314159265358979 schrieb:

    Dann werden die Bytes der Zeichen auf die entsprechende Anzahl an char's aufgeteilt. (1 char = per Definition 1 Byte) Das bedeutet, dass du dir dann selbst aus den char's wieder deine wchar_t's, oder welchen Datentypen auch immer du haben möchstes, "zusammenbauen" musst.

    Hey

    Muss ich da jedes Zeichen mit dem anderen Zeichen addieren oder verunden (&)?
    Könntest du mal ein Beispiel zeigen?

    Google zeigt mir dutzende Ergebnisse, die aber die WIN-API benutzen



  • Was ich damit sagen will: Vielleicht gibt es ja eine Standardfunktion die schöner ist



  • Ich kann mir nicht vorstellen, dass boost::asio nicht irgendeine Möglichkeit bietet, andere Typen als char zu lesen, dann sparst du dir die Umwandlung.



  • Habe bis jetzt nicht wirklich was gefunden.

    Muss ich es überhaupt überprüfen?
    Ich meine, mich interessiert der Inhalt der Dateien gar nicht, ich will sie lediglich senden.
    Kann ich die Dateien nicht binär auslesen und dann auf der anderen Seite der Verbindung binär auf die Platte abspeichern?
    Schliesslich muss sich der Texteditor dann später darum kümmern, oder nicht?

    Ist wchar_t UTF16 oder UTF32 ?
    GCC meint UTF32, was sagt der Standard dazu?

    Danke



  • heydude schrieb:

    Ich meine, mich interessiert der Inhalt der Dateien gar nicht, ich will sie lediglich senden.
    Kann ich die Dateien nicht binär auslesen und dann auf der anderen Seite der Verbindung binär auf die Platte abspeichern?

    Dann ist doch völlig egal, ob da Text in char, wchar oder sonstwie, oder Bilder oder Sound 'drin ist'.
    Lies sie binär (Byte für Byte) ein, sende sie, schreibe sie am anderen Ende auf die Platte, fertig.

    Edit:
    Wenn Du eine Datei kopierst, interessiert Dich doch auch erst mal nicht, was drin ist.



  • heydude schrieb:

    Ist wchar_t UTF16 oder UTF32 ?
    GCC meint UTF32, was sagt der Standard dazu?

    Nichts.



  • Belli schrieb:

    heydude schrieb:

    Ich meine, mich interessiert der Inhalt der Dateien gar nicht, ich will sie lediglich senden.
    Kann ich die Dateien nicht binär auslesen und dann auf der anderen Seite der Verbindung binär auf die Platte abspeichern?

    Dann ist doch völlig egal, ob da Text in char, wchar oder sonstwie, oder Bilder oder Sound 'drin ist'.
    Lies sie binär (Byte für Byte) ein, sende sie, schreibe sie am anderen Ende auf die Platte, fertig.

    Edit:
    Wenn Du eine Datei kopierst, interessiert Dich doch auch erst mal nicht, was drin ist.

    Na gott sei Dank... merci beacoup belli!

    manni66 schrieb:

    heydude schrieb:

    Ist wchar_t UTF16 oder UTF32 ?
    GCC meint UTF32, was sagt der Standard dazu?

    Nichts.

    Wozu existiert dann dieser Typ dann?
    Ein Platzhalter für den neuen Standard oder wie?



  • wchar_t ist für Wide-Char gedacht. Die Definition, was das genau ist, überlässt der Standard den Compilerherstellern aber genau so, wie er auch z.B. die Größe von int nicht definiert.


Log in to reply