Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по строкам

435
11 апреля 2006 года
avatara
188 / / 07.07.2003
Извините, что задаю такой вопрос, давно не занимался программированием и вот возникла необходимость. Кстати в поиске по форуму вроде какой-то глюк - не переходит на вторую страницу поиска, поэтому и спрашиваю.
1. Есть КомбоБокс, в нем 12 пунтков. Для этого Бокса создана переменная. Получаю индекс выделенного элемента:
int ComboInd;
ComboInd = m_MagazinCombo.GetCurSel();
теперь согласно индекса в строку
CString mag;
нужно занести текст, например "Vuz" или "Vega" или "Getman" и т.д всего 12 значений
Делать типа:
if (ComboInd == 0)
{
mag = "Gast";
}
else
if (ComboInd == 1)
{
mag = "Vuz";
}
else
if (ComboInd == 2)
{
mag = "Vega";
}
else
if (ComboInd == 3)
{
mag = "Getman";
}
как-то некрасиво, громоздко и неоптимально
хотелось бы задать типа массива, где элементы массива это строки и была бы возможность вытаскивать элемент из массива с помощью оператора [].
и еще один вопрос
как полученное из ЕдитБокса значение преобразовать в число (чтобы сделать с ним операции), а затем снова преобразовать в текст
(функции atoi и itoa работают с char* а получаемое значение заносится в CString)
9.5K
12 апреля 2006 года
Damarus
101 / / 08.04.2006
Массив можно сделать так:
 
Код:
const CString Text[4] = { "Gast", "Vuz", "Vega", "Getman" };

int ComboInd = m_MagazinCombo.GetCurSel();
CString mag = Text[ComboInd];


Преобразовать CString в int можно так:
 
Код:
int i = atoi(cstring.GetBuffer());


И наоборот:
 
Код:
int integer = 10;

cstring.Format("%d", integer);
395
12 апреля 2006 года
RelB
367 / / 09.11.2002
Цитата:
Originally posted by avatara
Извините, что задаю такой вопрос, давно не занимался программированием и вот возникла необходимость. Кстати в поиске по форуму вроде какой-то глюк - не переходит на вторую страницу поиска, поэтому и спрашиваю.
1. Есть КомбоБокс, в нем 12 пунтков. Для этого Бокса создана переменная. Получаю индекс выделенного элемента:
int ComboInd;
ComboInd = m_MagazinCombo.GetCurSel();
теперь согласно индекса в строку
CString mag;
нужно занести текст, например "Vuz" или "Vega" или "Getman" и т.д всего 12 значений
Делать типа:
if (ComboInd == 0)
{
mag = "Gast";
}
else
if (ComboInd == 1)
{
mag = "Vuz";
}
else
if (ComboInd == 2)
{
mag = "Vega";
}
else
if (ComboInd == 3)
{
mag = "Getman";
}
как-то некрасиво, громоздко и неоптимально
хотелось бы задать типа массива, где элементы массива это строки и была бы возможность вытаскивать элемент из массива с помощью оператора [].
и еще один вопрос
как полученное из ЕдитБокса значение преобразовать в число (чтобы сделать с ним операции), а затем снова преобразовать в текст
(функции atoi и itoa работают с char* а получаемое значение заносится в CString)


Во первых, что нам мешает взять CString сразу с комбобокса? а именно m_MagazinCombo.GetLBText(ComboInd, mag);

Это первное, второе... В число преобразовать просто, есть же не только atoi, есть еще wtoi, и самое нужное _ttoi... Из числа в строку (как отмечалось выше) через CString::Format

395
12 апреля 2006 года
RelB
367 / / 09.11.2002
Цитата:
Originally posted by Damarus
Преобразовать CString в int можно так:
 
Код:
int i = atoi(cstring.GetBuffer());


Так нельзя, если у нас уникодный проект, то работать не будет... Нужно, как я говорил выше так:

 
Код:
int i = _ttoi(cstring);
435
12 апреля 2006 года
avatara
188 / / 07.07.2003
текст из КомбоБоска брать не надо, т.к. там находятся совсем другие слова, которым надо в дальнейшем поставить в соответствии псевдонимы в латинице
const CString Text[4] = { "Gast", "Vuz", "Vega", "Getman" };
а так я делал, правда без спецификатора КОНСТ, надо попробовать

Еще есть идея в данном случае вместо CString использовать CStringArray


Большое СПАСИБО, всем кто помог.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог