Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2011, 06:53   #1
frantic150
Пользователь
 
Аватар для frantic150
 
Регистрация: 25.05.2009
Сообщений: 31
По умолчанию что-то странное в Visual C++

Есть код:
Код:
				 char value1[4] = {'t', 'e', 's', 't'};
				 String^ str = System::Runtime::InteropServices::Marshal::PtrToStringAnsi(IntPtr(value1));
				 MessageBox::Show(str);
а выводится следующее


я криво перевел char в System::String^?


/
а если так, то вообше ничего не показывает
Код:
				 String^ value;
				 MessageBox::Show(value);

Последний раз редактировалось frantic150; 12.06.2011 в 07:08.
frantic150 вне форума Ответить с цитированием
Старый 12.06.2011, 10:09   #2
Alex456
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 10
По умолчанию

Цитата:
char value1[4] = {'t', 'e', 's', 't'};
нужно выделять на 1 символ больше под конец строки '\0'
то есть нужно так
Цитата:
char value1[5] = {'t', 'e', 's', 't'};
Alex456 вне форума Ответить с цитированием
Старый 12.06.2011, 10:17   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Точнее, нужно так:
Код:
char value[5] = {'t', 'e', 's', 't', '\0'}
Хотя непроинициализированные элементы массивов все равно принимают нулевое значение и такой код все-таки нормально сработает, идеологически у вас объявлен массив символов, а вовсе не нуль-терминированная строка.
Цитата:
а если так, то вообше ничего не показывает
А что оно должно показывать, если вы объявили пустую (точнее, даже нулевую) строку? Присвойте ей какое-нибудь значение - тогда покажет.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 12.06.2011, 14:56   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

а что, в этом вашем c++.net уже нельзя объявлять строковые массивы, как
Код:
char value[] = "test";
?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 12.06.2011, 16:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
уже нельзя объявлять строковые массивы, как
А смысл? Есть ведь более гибкий string. Чего бы им не пользоваться?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++, Visual C#, Visual basic .Net, или Microsoft.Net Что лучше? _PROGRAMM_ Общие вопросы .NET 14 10.10.2012 19:24
бибы в visual studio не подключяются, что делать? VAnj2607 Visual C++ 0 13.04.2011 21:45
обработка нажатия ENTER(#13): что-то странное... D][mon Помощь студентам 0 13.10.2010 19:12
Поиск в папке и подпапках(что то странное твориться) leo_new Общие вопросы Delphi 1 16.12.2009 20:01
Visual C++: Что не так делаю? N!ckeL Помощь студентам 8 19.05.2008 11:28