[C++/C#] BSTR Rückgabe aus C# DLL in MSVC++ 6 verwerten. Abbruch durch '0'?

Code:
HRESULT test;

TestLib::_TestLib *ptr;
CoInitialize(NULL);
TestLib::_TestLibPtr p(__uuidof(TestLib::TestLib));
ptr = p;
BSTR bstrKaese;
test = ptr->fkt(&bstrKaese);
cout << test << "  " <<bstrKaese << " " << *bstrKaese << "\n";
char * test2= (char*)bstrKaese;
int i = 0, j = 0;
while (i < 178){
cout << test2+(j*sizeof(char));
j+=2;
i++;
}

i=0;
j=0;
cout << "\n";
while((*test2+j*sizeof(char)) >= '0' && (*test2+j*sizeof(char)) <= '9' || (*test2+j*sizeof(char)) == ' '){
cout << test2+(j*sizeof(char));
	j+=2;
	i++;
	}
cout << "debug 8* :" <<test2+(8*sizeof(char));

Mein Aufrufender C++ code.
Er ruft eine Methode "fkt" in einer C# DLL auf, BSTR "bstrKaese" ist ein Pointer auf die erste Stelle des zurückgegebenen Strings.

Die Rückgabe ist insgesamt 178 zeichen lang.
Die ersten 8 sind "3293014 ".
Lasse ich mir nun die Zeichen Folgendermassen ausgeben:
Code:
while (i < 178){
cout << test2+(j*sizeof(char));
j+=2;
i++;
}
erhalte ich den kompletten (fehlerfreien) string, der mir aus meiner c# DLL zurückgegeben wird, also alles ist "korrekt" vorhanden.
Ersetze ich die bedingung der Schleife für den bereich der Zahlen (0-9) und der Leertaste(Space)

Code:
(*test2+j*sizeof(char)) >= '0' && (*test2+j*sizeof(char)) <= '9' || (*test2+j*sizeof(char)) == ' '
Sollten die ersten 8 stellen ausgegeben werden:
"3293014 "
Allerdings wird immer nach "3293" abgebrochen, da die "0" anscheinend nicht als solche erkannt wird.
gebe ich über
Code:
cout << "debug 8* :" <<test2+(8*sizeof(char));
die Stelle der "0" einzeln aus, wird wieder eine "0" angezeigt, überprüfe ich sie allerdings auf '0' fehlanzeige, '\0' auch fehlanzeige.
Was könnte diese Null sein - und vorallem, wieso ist sie es?

Danke für die Hilfe bereits im Vorraus, ich hoffe die Problembeschreibung ist halbwegs verständlich.
 
Zuletzt bearbeitet:
Zurück