2016-04-27 4 views
-3

Как часть моего кода, мне нужно вывести в текстовом поле строку из 8 символов, которые были зашифрованы. Поэтому мне нужно преобразовать массив из 8 символов в систему String^. Я пробовал следующее:Преобразование char-array в System :: String^

char result[8]; 
for(int i=0; i<8; i++) 
{ 
    result[i] = (char)DecimalCypher[7-i]; 
} 

textBox3->Text = gcnew String(result); 

Однако текстовое поле показывает более 8 символов. 8 символов будут меняться в зависимости от ввода, а оставшиеся останутся как есть. Пример, Если мой вход

andrew12

, выход в TextBox является

Т) W + "Зиз BVI Pe

Однако если мой ввод

andrew33, выход будет: A1-1` + Ta BVI pé

Последние 6 символов одни и те же .. но здесь не должно быть в первую очередь. Это первые 8 символов, которые имеют значение!

Любая идея, почему это происходит?

+1

Вы должны мобилизовывать неуправляемую строку в управляемой строку. https://msdn.microsoft.com/en-us/library/bb384865.aspx – lcs

+1

изменить 'char result [8];' to 'char result [9] = {0};' –

+0

Вы должны аннулировать все c- стиль строки. – user4581301

ответ

0

При заполнении массива символов с намерением использовать его в виде строки всегда убедитесь, что байт после последнего действительного байта является нулевым. Подробнее здесь: What is a 'Null Terminated String' ?

char result[8]; 

Делает переменную result и выделяет место для 8 символов.

for(int i=0; i<8; i++) 
{ 
    result[i] = (char)DecimalCypher[7-i]; 
} 

заполняет все 8 символов в result.

textBox3->Text = gcnew String(result); 

Делает новую строку result, как будто result была строка с стилем. К сожалению, result не является строкой c-стиля, поскольку она не была завершена нулем.

Вместо использования:

char result[9]; 

Делает переменную result и выделяет пространство для 9 символов.

result[8] = '\0'; 

null завершается result.

for(int i=0; i<8; i++) 
{ 
    result[i] = (char)DecimalCypher[7-i]; 
} 

Заполняет до 8 символов в result. 9-й используется нулем.

textBox3->Text = gcnew String(result); 

Делает новую строку с C-стиль строкой result

Смежные вопросы