Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TextBox, char 
:(
    Опции темы
Metalex
Дата 6.1.2011, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



Из одного TextBox'a я заношу посимвольно данные в вектор типа чар:
Код

maschar.masiv.push_back(danie[i]);

А после сортировки вывожу их в другой текстбокс:
Код

for (int i=0; i<maschar.n; i++)
this->textBox2->Text+=Convert::ToString(maschar.masiv[i]);

но получаю на выходе их номера в таблице, а не сами символы. Подскажите, пожалуйста, как вывести сами символы?


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
jonie
Дата 6.1.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Metalex, std::vector<char> ? Тогда вы получите сильно обрезанные данные, т.к. C# работает с UTF-16 кодировкой (двухбайтовая).

А для конвертации вам нужно будет использовать Encoding::ANSI->GetString() или другие её члены как мне кажется...


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



Цитата(jonie @  6.1.2011,  18:34 Найти цитируемый пост)
std::vector<char> ?

да, именно.
только я не в c#, a в CLR Windows Forms пытаюсь.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Metalex
Дата 7.1.2011, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



Пробую так:
Код

System::Text::Encoding^ encoding = System::Text::Encoding::UTF8;
                    array<Byte>^ buffer = gcnew array<Byte>(maschar.n);
                    String^ masch;
                    for (int i=0; i<maschar.n; i++)
                        masch+=Convert::ToString(maschar.masiv[i]);
                    buffer=encoding->GetBytes(masch);
                    this->textBox2->Text=encoding->GetString(buffer);

но на выходе все равно получаю номера..

Добавлено через 8 минут и 34 секунды
поясню условие поподробнее: нужно из maschar.masiv (это std::vector), длиной maschar.n=maschar.masiv.size() и который состоит из символов char получить string^, чтоб его можно было записать в textBox.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
cream
Дата 9.1.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

только я не в c#, a в CLR Windows Forms пытаюсь.

Metalex,  может, C++/cli?
Если нет необходимости в русских буквах:
Код

System::Void work_with_vector() 
        {
            std::vector<char> mas_char;
            String^ string_text = textBox1->Text;
            for ( int i = 0; i < string_text->Length; i++ )
            {
                mas_char.push_back( (char)string_text[i] );
            }

            String^ out_text = "";
            std::vector<char>::iterator iter = mas_char.begin();
            for ( unsigned int j = 0; j < mas_char.size(); j++ )
            {
                wchar_t wchrt = *iter;
                out_text += wchrt.ToString();
                iter++;
            }
            textBox2->Text = out_text;
        }

PM MAIL   Вверх
Metalex
Дата 10.1.2011, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



cream, выводит снова номера :(


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
cream
Дата 11.1.2011, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Metalex @  10.1.2011,  20:43 Найти цитируемый пост)
cream, выводит снова номера :(

Потому что вектор - это не массив, и оператор [ ] возвращает не элемент вектора, а ссылку на этот элемент.
Поэтому для тебя будет лучше пользоваться итератором, как в моем коде.
PM MAIL   Вверх
Metalex
Дата 11.1.2011, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



Ну я и сделал так, как ты написал.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
mrbrooks
Дата 11.1.2011, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Metalex, честно говоря выглядит как то жестко. Тем паче зря игнорируете замечание jonie - можно получить реально обрезанные данные.

если необходимо сортировка массива - почему бы это не сделать с помощью самой FCL.
к примеру хотя бы так:
Код

string str = "zxy";
char[] buf = str.ToCharArray();
Array.Sort(buf);
str = new string(buf);

собственно перевести на managed c++ не сложно.

считается не очень удачным стилем мешать управляемый и неуправляемый код. тем паче, что STL портирована на .NET.
PM MAIL   Вверх
cream
Дата 11.1.2011, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



mrbrooks, дык вроде вся идея заключается в необходимости использования вектора. 
И, скорее всего, автору темы необходимо решение на native-коде.

Цитата(mrbrooks @  11.1.2011,  11:27 Найти цитируемый пост)
считается не очень удачным стилем мешать управляемый и неуправляемый код. тем паче, что STL портирована на .NET.

Зато вполне нормально написать функцию на неуправляемом, и потом использовать ее в управляемом коде.
PM MAIL   Вверх
mrbrooks
Дата 11.1.2011, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(cream @  11.1.2011,  15:56 Найти цитируемый пост)
mrbrooks, дык вроде вся идея заключается в необходимости использования вектора. 
И, скорее всего, автору темы необходимо решение на native-коде.

не спорю. просто из поставленного вопроса вытекает, что он использует вектор для сортировки. 

Цитата(cream @  11.1.2011,  15:56 Найти цитируемый пост)
Зато вполне нормально написать функцию на неуправляемом, и потом использовать ее в управляемом коде. 

это при условии, что есть аналогичный враппер на .net? 
PM MAIL   Вверх
Metalex
Дата 11.1.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



Да. Чар заносится в вектор, который сортируется. Необходимости в стандартных алгоритмах нет.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
cream
Дата 11.1.2011, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Metalex,
пользуйтесь

Код

std::vector<char> Sorting_vector( std::vector<char> s_vector )
{
    std::sort( s_vector.begin(), s_vector.end() );
    return s_vector;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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