Unterschied zwischen lstrcpyn und strncpy



  • Ja kann mir das jemand erklären und auch bitte wann man was benutzen sollte, welche Funktion schneller ist etc.



  • Kann mich täuschen aber normal steht das "l" vor der Funktion immer für die UNICODE unabhängige Funktions-Variante aus dem tchar.h Header. => Geschwindigkeit die gleiche, nutzt du allerdings TCHAR's und keine char's, dann solltest du lstrcpyn nehmen. Ansonsten wirst du Fehlermeldungen beim erstellen einer UNICODE Kompilation erhalten.



  • Was sind TCHARs? Ich hab mal spaßhalber beide Versionen kompiliert und meine Anwendung läuft augenscheinlich gleich ab. Was ist eine UNICODE Kompilation und für was ist die gut?



  • Nob-F. schrieb:

    Was sind TCHARs?

    Wenn UNICODE nicht definiert ist char, andernfalls wchar_t. Dies hat den Vorteil, dass Du Zeichensatz-unabhängig entwickeln kannst und Dich später immer noch für einen Zeichensatz entscheiden kannst, ohne etwas ändern zu müssen.

    Nob-F. schrieb:

    Ich hab mal spaßhalber beide Versionen kompiliert und meine Anwendung läuft augenscheinlich gleich ab.

    Joar, klar, muss auch so sein :p .

    Nob-F. schrieb:

    Was ist eine UNICODE Kompilation und für was ist die gut?

    ➡ http://www.c-plusplus.net/forum/viewtopic-var-t-is-161855.html

    (D)Evil schrieb:

    Kann mich täuschen aber normal steht das "l" vor der Funktion immer für die UNICODE unabhängige Funktions-Variante aus dem tchar.h Header.

    lstrcpyn ist eine Windows-Alternative zu strcpyn (also Zeichensatz-unabhängig). Diese ist aber nit in tchar.h definiert 😉 .



  • Windows bietet die Datentypen CHAR und WCHAR an. CHAR hat 1 Byte und versteht sich als ASCII/ANSI-Zeichen der jeweiligen Codepage. Ist also nicht unbedingt das was sich der heutige Programmierer unter "Internationalisierungsmöglichkeit" vorstellt.

    Alle neuen Windows-Versionen arbeiten intern nun mit WCHAR und UNICODE welches aus einem 2 Byte-Zeichen besteht und es ermöglicht nahezu alle erfundenen Zeichen auf diesem Planeten darzustellen.

    Damit ich aber die armen alten Win9x-Benutzer noch weiterhin unterstützte muss ich TCHAR verwenden und einmal mit ASCII/ANSI und einmal mit UNICODE compilieren (TCHAR wird dann dynamisch zu CHAR oder WCHAR).

    Hat aber imho jetzt schon fast gar keinen Sinn mehr und ich empfehle bei neu geschriebenen Programmen komplett auf WCHAR umzusteigen.

    MfG SideWinder



  • Einen sehr interessanten Artikel zum Thema Zeichensätze unter Windows gibts im C++-Magazin weiter unten im Forum von Jochen Kalmbach 👍

    MfG SideWinder



  • SideWinder schrieb:

    Einen sehr interessanten Artikel zum Thema Zeichensätze unter Windows gibts im C++-Magazin weiter unten im Forum von Jochen Kalmbach 👍

    MfG SideWinder

    Guck mal, was ich oben verlinkt habe 😉 .


Log in to reply