Я фактически использую функцию WideCharToMultiByte
для преобразования строки VB6 в строку C (char *
). Все работает нормально, за исключением того, что если исходная строка содержит нулевой символ, то строка C усекается.VB6 string to char * conversion: avoid null character
Для exmaple:
vbString = "Hello " & Chr(0) & " world!"
Результирующая строка С Hello \0
. Я не могу найти какой-либо вариант в документации по функциям, чтобы избежать такого поведения.
Любые идеи?
«Строка C» не обязательно ANSI или ASCII, многие компиляторы поддерживают UTF-16LE. Но так как NUL всегда заканчивается в любом случае, нет, вы ничего не можете сделать. Если код, написанный на C, не использует операции «байт»/«char», а не «строковые» операции, у вас не может быть символ NUL. Возможно, есть функции BSTR, которые вы можете использовать instad? – Bob77
... и даже если бы вы могли, большинство вещей, которые использовали бы строку, увидели бы встроенный NUL в качестве конца строки и проигнорировали остальные – Plutonix
@ Bob77 Вы правы, ребята. Но я решил это, итерации в строковые символы VB6 и ручную замену '\ 0' на одно пространство. Благодаря! – cdonts