crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> преобразование типов, тип int запихнуть в label например (или в entry)
baunts
  опции профиля:
сообщение 7.9.2011, 10:16
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 7.9.2011
Пользователь №: 2852

Спасибо сказали: 0 раз(а)




Репутация:   0  


1 int value = 1111111;
2 char str[20] = {'\0'};
3 sprintf (str, "%d", value);
4 gtk_entry_set_text ( GTK_ENTRY (entry), str );

есть ли решение поприличнее (короче и универсальнее) 2и3 строк?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.9.2011, 12:44
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


sprintf_s лучше использовать :) Там можно максимальную длину приёмника указать

std::string s(20,0);
sprintf_s(&s[0],s.size(),"%d",1111111);

//s.c_str() - строка
gtk_entry_set_text ( GTK_ENTRY (entry), s.c_str() );


а как в GTK+ покороче - не знаю. В Qt и в MFC только знаю ))

Как выход, могу предложить добавить глобальную функцию, принимающую число и заполняющую контейнер с текстом

Сообщение отредактировал Алексей1153 - 7.9.2011, 12:47
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 7.9.2011, 13:06
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Алексей1153 @ 7.9.2011, 13:44) *
sprintf_s лучше использовать :) Там можно максимальную длину приёмника указать

Лучше использовать стандартный snprintf, вместо не портабельной поделки микрософта. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.9.2011, 16:57
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


BRE, может быть )

кстати, в std , может, своя печаталка есть, только я никогда не заморачивался и не искал

Сообщение отредактировал Алексей1153 - 7.9.2011, 16:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.9.2011, 10:50
Сообщение #5


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Алексей1153 @ 7.9.2011, 19:57) *
BRE, может быть )

не может быть, а абсолютно точно. в кроссплатформе надо избегать непортабельных частных реализаций. под другими системами этих XXX_s функций нет и можно нарваться на проблемы. если очень хочется, можно определить макросы, конечно. чтобы под вендой был sprintf_s, а под линём - sprintf. но это тоже довольно хитрый макрос надо писать.

Цитата(baunts @ 7.9.2011, 13:16) *
2 char str[20] = {'\0'};
3 sprintf (str, "%d", value);

кстати, занулять строку не обязательно. sprintf сам добавляет '\0' после окончания записи строки. нужно только проверять возвращаемый результат - сколько символов он записал в строку (естественно, добавленный ноль в конце не включается в длину).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sergey B.
  опции профиля:
сообщение 28.10.2011, 11:20
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 12.2.2008
Пользователь №: 92

Спасибо сказали: 1 раз(а)




Репутация:   0  


ну если использовать std::string
http://www.cplusplus.com/reference/iostream/stringstream/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RRaptor
  опции профиля:
сообщение 13.10.2012, 21:25
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.10.2012
Пользователь №: 3559

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как вариант:

int value = 1111111
ostringstream outs;
outs<<value;
gtk_entry_set_text ( GTK_ENTRY (entry), outs.str().data());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 3:23