crossplatform.ru

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


  Ответ в преобразование типов
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
RRaptor Дата 13.10.2012, 21:25
  Как вариант:

int value = 1111111
ostringstream outs;
outs<<value;
gtk_entry_set_text ( GTK_ENTRY (entry), outs.str().data());
Sergey B. Дата 28.10.2011, 11:20
  ну если использовать std::string
http://www.cplusplus.com/reference/iostream/stringstream/
Iron Bug Дата 8.9.2011, 10:50
 
Цитата(Алексей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' после окончания записи строки. нужно только проверять возвращаемый результат - сколько символов он записал в строку (естественно, добавленный ноль в конце не включается в длину).
Алексей1153 Дата 7.9.2011, 16:57
  BRE, может быть )

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

Лучше использовать стандартный snprintf, вместо не портабельной поделки микрософта. ;)
Алексей1153 Дата 7.9.2011, 12:44
  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 только знаю ))

Как выход, могу предложить добавить глобальную функцию, принимающую число и заполняющую контейнер с текстом
baunts Дата 7.9.2011, 10:16
  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 строк?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 14:28