carriage return aus einem c++ string löschen

Reticent

Erfahrenes Mitglied
Tagchen,


ich habe eine DLL in c++ gebastelt, die mir eine Zeile liefert. Wenn ich sie jetzt in z.B. VB aufrufe bekomme ich die benötigte Zeite, aber am Ende ist immer ein Hieroglyph zu sehen. Ich vermutte, dass es der berühmte carriage return ist, den C überall mitschleppt.

Egal was ich in meiner DLL mache, z.B. das
Code:
CString s_str;
char* chp_new_str;

s_str = "aha";
chp_new_str = s_str;
bekomme ich das Ding am Ende von chp_new_str. Sogar wenn ich in einer Schleife alle Zeichen einzeln umschaufle, kommt dasselbe.


Weiss vielleicht jemand wie ich den von meiner Zeile löschen kann?


Danke sehr
 
Hi,

Ich glaub nicht, dass es der CR ist, der da die Probleme macht. Den kennt VB nämlich.
Ich denke eher, dass es die Terminierung des Strings ist (\0). Die gibt es nämlich in einigen Programmiersprachen nicht. ich weiß nicht, wie es in VB ausschaut.

Ein Lösung, die mir da einfällt, wäre einen Substring von 0 bis Stringlänge - 1. Das müsstest du aber auf VB Seite machen.
 
danke, vermuttlich hast du Recht. Bei VB den String kürzen würde natürlich gehen, nur wird es nicht jeder Kunde machen wollen, dem ich die DLL anbiete.

Kann man denn nicht in c++ irgendwie die Terminierung des Strings im Speicher löschen?
Habe mit .Remove((TCHAR)'\0') versucht --> funkt nicht.

Ist es machbar?
 
Hi,

Also ich kann jetzt nur vermuten, dafür fehlt mir die Erfahrung mit C++.
Aber was passiert denn, wenn du ein Char-Array zurück gibst, welches nur die gewünschten Zeichen enthält. Du also das letzte Zeichen nicht mit ins Array schreibst.
 
Zurück