Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование из char* в String^, Не отображаются русские буквы 
V
    Опции темы
camtasia
  Дата 1.6.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 18.5.2010

Репутация: нет
Всего: нет



Проблемы с преобразование из char* в String^ в проекте VC++ EE, ангийские буквы преобразуются нормально, но вот русские буквы высыпают а виде квадратиков или абракадабры.
Пытаюсь сделать так:
Код

using namespace System::Runtime::InteropServices;

char* f = "а";
label1->Text += Marshal::PtrToStringUni((IntPtr)f);


я так понимаю Marshal::PtrToStringUni((IntPtr)f) переводит только один символ, потому что если f = "asdf" то лайбле тоже абракодабра
подскажите пожалуйста идею с преобразование!!

или киньте идею как мне задать массив из 10 строк типа String^, что бы можно было сразу в лейбл запихивать одно из значений массива!
PM MAIL   Вверх
ИванМ
Дата 1.6.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 1
Всего: 23



camtasia, а зачем вообще пользоваться char*? Это не рекомендовано, если нет веских причин.
PM MAIL   Вверх
camtasia
Дата 1.6.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 18.5.2010

Репутация: нет
Всего: нет



Что посоветуете взять вместо char*? Просто я недавно копаюсь С++, до этого работал в Делфи, после Делфей никак не могу разобраться со строками в C++. smile 
PM MAIL   Вверх
ИванМ
Дата 1.6.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 1
Всего: 23



Цитата(camtasia @  1.6.2010,  22:14 Найти цитируемый пост)
Что посоветуете взять вместо char*

camtasia, естественно String^.
PM MAIL   Вверх
djamshud
Дата 1.6.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Оффтоп. А что это за язык такой? Похож на С++, но не он ведь...


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
ИванМ
Дата 1.6.2010, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 1
Всего: 23



djamshud, Managed C++ (.NET).
PM MAIL   Вверх
jonie
Дата 1.6.2010, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



русские в какой кодирвоке хранятся ? Если в ANSI , тогда используйте Marshal.PtrToStringAnsi(), если в UTF-8 или чем-то еще (исключая UCS-2 LE), надо использоать Encoding и его методы статические


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
camtasia
Дата 1.6.2010, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 18.5.2010

Репутация: нет
Всего: нет



Всем огромное спасибо за ответы!
отдельное спасибо ИванМ!
Воспользовался его советом и нашел такой пример:
Код


array<System::String ^>^ mess = gcnew array<System::String ^> {"Строка1","Строка2","Строка3"};


Всё вполне устраивает!
Только вот вопрос: можно ли сделать аналогичный двумерный массив? если можно то как?
PM MAIL   Вверх
ИванМ
Дата 1.6.2010, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 1
Всего: 23



Цитата(camtasia @  1.6.2010,  23:03 Найти цитируемый пост)
можно ли сделать аналогичный двумерный массив

Вроде если через array, то только если один array внутри другого.
Типа такого:
array<array<System::String ^>^>^

А вообще советую не пользоваться Managed C++. Очень неудобно и сложно. Советую перейти на C# или Visual Basic .NET, если хотите под .NET писать.

Это сообщение отредактировал(а) ИванМ - 1.6.2010, 23:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.