Visual C++ ASCII zamiast string

0

Witam otóż mam problem i kompletnie nie wiem jak go rozwiązać, googlowałem i nic nie znalazłem,
Otóż:

char temp[255];
char nick[255];
label1->Text="Nick :";
							for(int i=0;i<255;i++)
							{
								if(temp[i]==0)
									break;
								else
									nick[i]=temp[i];
								label1->Text+=(nick[i].ToString());
							}

Fragment kodu, zamiast wyświetlić nick wypisuje znaki ASCII i nie wiem jak to naprawić.
PS.
Dane pobieram z procesu i działa sprawdzałem w debugerze.

0

Jeden z konstruktorów System::String pobiera wskaźnik na ciąg znaków Unicode zakończony \0. Nie musisz sam robić tego w dziwny sposób.
Jeżeli będziesz miał problem z kodowaniem to użyj System::Encoding.

0

Możesz podać przykład jak to zrobić?

0

Nie wiesz jak wywołać konstruktor?

0

Tyle że ja nie używam nigdzie stringa, więc i konstruktora. A do labela potrzebuje mieć stringa, więc użyłem f-cję ToString(), ale ona wypisuje tylko znaki ASCII.

1

Tamto ci nie działa, bo char w C# i char w C++/CLI to nie jest to samo. char z perspektywy C++/CLI to zwykły typ liczbowy i ToString() daje właśnie reprezentację dziesiętną liczby. char znany z C# w C++/CLI to wchar_t. I właśnie na ten typ musiałbyś swój znak rzutować, żeby poprawnie go dołączyć za pomocą operatora +=.

Ale to wciąż jest beznadziejna metoda na zamianę ciągu znaków na System::String. Jak już pisałem, jeden z konstruktorów tego typu pobiera wskaźnik do chara i jedyne co musisz zrobić to label1->Text = gcnew String(temp);

0

Dzięki pomogło ale musiałem zostawić

 char

bo mi jakieś chińskie krzaki wywaliło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1