IntToStr в Visual
От: Аноним  
Дата: 17.12.04 06:18
Оценка:
Подскажите пожалуйста как в VC2003 перевести unsigned int в строковую переменную
пытаюсь писать так:


unsigned int temp;
CString TextLabel = "";
TextLabel += IntToStr(temp);


Выдает ошибку!!!! Как еще можно?
Re: IntToStr в Visual
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 17.12.04 06:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Подскажите пожалуйста как в VC2003 перевести unsigned int в строковую переменную

А>пытаюсь писать так:

А>
А>unsigned int temp;
А>CString TextLabel = "";
А>TextLabel += IntToStr(temp);
А>


unsigned int temp;
CString TextLabel = "";
TCHAR szTemp[32];

TextLabel += _ultot(temp, szTemp, 10);
[ posted via RSDN@Home 1.1.4 beta 3 r241 ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[2]: IntToStr в Visual
От: Аноним  
Дата: 17.12.04 06:34
Оценка:
Спасибо! А как на счет

unsigned int64 ??? как тогда?
Re: IntToStr в Visual
От: BacCM Россия  
Дата: 17.12.04 06:36
Оценка: 1 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Подскажите пожалуйста как в VC2003 перевести unsigned int в строковую переменную

А>пытаюсь писать так:


А>
А>unsigned int temp;
А>CString TextLabel = "";
А>TextLabel += IntToStr(temp);
А>


А>Выдает ошибку!!!! Как еще можно?


1) itoa
2) CString::Format("%d",
. . .
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[3]: IntToStr в Visual
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 17.12.04 06:37
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Спасибо! А как на счет


А>unsigned int64 ??? как тогда?


_ui64tot()
[ posted via RSDN@Home 1.1.4 beta 3 r241 ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re: IntToStr в Visual
От: Rusland  
Дата: 17.12.04 06:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите пожалуйста как в VC2003 перевести unsigned int в строковую переменную

А>пытаюсь писать так:


А>
А>unsigned int temp;
А>CString TextLabel = "";
А>TextLabel += IntToStr(temp);
А>


А>Выдает ошибку!!!! Как еще можно?


Вроде itoa
Re: IntToStr в Visual
От: MaximE Великобритания  
Дата: 17.12.04 08:08
Оценка:
wrote:

>
> unsigned int temp;
> CString TextLabel = "";
> TextLabel += IntToStr(temp);
>

>
> Выдает ошибку!!!! Как еще можно?

Две фундаментальные вещи:

1. Для перевода в строку — snprintf
unsigned int temp;
char buf[std::numeric_limits<unsigned int>::digits10 + 1]; // +1 для завершающего 0, для знакого типа добавить еще +1 для знака
snprintf(buf, sizeof(buf), "%u", temp);


2. Для перевода в число — strtol, strtoul.
char const* s = "123";
char* p;
unsigned long l = strtoul(s, &p, 0);
if(p == s)
     // error


Все остальные инструмены основаны на этих двух.

См. также boost::lexical_cast (в поиск).

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 delta
Re[2]: IntToStr в Visual
От: Шахтер Интернет  
Дата: 18.12.04 03:01
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Все остальные инструмены основаны на этих двух.


Ну не правда ваша.

...
Автор: Шахтер
Дата: 09.01.04
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: IntToStr в Visual
От: MaximE Великобритания  
Дата: 18.12.04 12:43
Оценка:
Шахтер wrote:

> ME>Все остальные инструмены основаны на этих двух.

>
> Ну не правда ваша.

Ok, стандартные инструменты.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 delta
Re[4]: IntToStr в Visual
От: ZAVRus Украина  
Дата: 18.12.04 15:34
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Здравствуйте, <Аноним>, Вы писали:


А>>Спасибо! А как на счет


А>>unsigned int64 ??? как тогда?


SDB>_ui64tot()

Вообщето если нужно получить CString то лучше воспользоваться
void CString::Format( LPCTSTR lpszFormat, ... );
,где:
lpszFormat = %[flags] [width] [.precision] [{h | l | I64 | L}]type

например:
int i1 = 23456;
__int64 i2 = 2345678;
CString l_Str;
l_Str.Format("%I64d", i2);
l_Str.Format("%d", i1);
Re[2]: IntToStr в Visual
От: ZAVRus Украина  
Дата: 18.12.04 15:45
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>См. также boost::lexical_cast (в поиск).


Мне кажеться к такой простой операции, как преобразоание числа в строку использовать библиотеку boost ну просто не логично.
Re[3]: IntToStr в Visual
От: Шахтер Интернет  
Дата: 18.12.04 20:08
Оценка:
Здравствуйте, ZAVRus, Вы писали:

ZAV>Здравствуйте, MaximE, Вы писали:


ME>>См. также boost::lexical_cast (в поиск).


ZAV>Мне кажеться к такой простой операции, как преобразоание числа в строку использовать библиотеку boost ну просто не логично.


Не только нелогично, а просто вредно
Автор: Шахтер
Дата: 19.03.04
.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: IntToStr в Visual
От: Юнусов Булат Россия  
Дата: 18.12.04 20:25
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Не только нелогично, а просто вредно
Автор: Шахтер
Дата: 19.03.04
.


Если уж и что то заслуживает претензий то это скорее стандартная библиотека потоков (которая даже не является стлью если подходить формально) и в послежнюю очередь бустовцы которые пользуются стрингстримом.
Re[5]: IntToStr в Visual
От: Шахтер Интернет  
Дата: 18.12.04 21:06
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:

ЮБ>Здравствуйте, Шахтер, Вы писали:


Ш>>Не только нелогично, а просто вредно
Автор: Шахтер
Дата: 19.03.04
.


ЮБ>Если уж и что то заслуживает претензий то это скорее стандартная библиотека потоков


Согласен.

ЮБ>(которая даже не является стлью если подходить формально) и в послежнюю очередь бустовцы которые пользуются стрингстримом.


А зачем они ею пользуются??? Их что, под дулом автомата заставили использовать stringstream? Если можно снять все эти ненужные обертки и пользоваться atoi, itoa, sprintf или просто самостоятельно написать примитивные преобразователи. Единственная реальная проблема, которая тут есть -- преобразование чисел с плавающей точкой. Здесь для переносимой реализации нужна поддержка со стороны платформы. Обычно, такая поддержка есть в виде _fcvt и тому подобных функций. На худой конец, можно задействовать sprintf.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[6]: IntToStr в Visual
От: Юнусов Булат Россия  
Дата: 18.12.04 21:18
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>А зачем они ею пользуются??? Их что, под дулом автомата заставили использовать stringstream? Если можно снять все эти ненужные обертки и пользоваться atoi, itoa, sprintf или просто самостоятельно написать примитивные преобразователи. Единственная реальная проблема, которая тут есть -- преобразование чисел с плавающей точкой. Здесь для переносимой реализации нужна поддержка со стороны платформы. Обычно, такая поддержка есть в виде _fcvt и тому подобных функций. На худой конец, можно задействовать sprintf.


Почему не привинтили что то подобное твоему конвертеру? Незнаю, гадать не хочу, подозреваю просто поленились.
Re[6]: IntToStr в Visual
От: MaximE Великобритания  
Дата: 18.12.04 21:27
Оценка: +1
Шахтер wrote:

[]

> А зачем они ею пользуются??? Их что, под дулом автомата заставили использовать stringstream? Если можно снять все эти ненужные обертки и пользоваться atoi, itoa, sprintf или просто самостоятельно написать примитивные преобразователи. Единственная реальная проблема, которая тут есть -- преобразование чисел с плавающей точкой. Здесь для переносимой реализации нужна поддержка со стороны платформы. Обычно, такая поддержка есть в виде _fcvt и тому подобных функций. На худой конец, можно задействовать sprintf.


А почему бы тебе не спросить все это в gmane.comp.lib.boost.devel и не предложить что-то лучше/проще/быстрее/круче? На rsdn все это неконструктивно и похоже на пустой треп за глаза.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 delta
Re[7]: IntToStr в Visual
От: Шахтер Интернет  
Дата: 19.12.04 00:10
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Шахтер wrote:


ME>[]


>> А зачем они ею пользуются??? Их что, под дулом автомата заставили использовать stringstream? Если можно снять все эти ненужные обертки и пользоваться atoi, itoa, sprintf или просто самостоятельно написать примитивные преобразователи. Единственная реальная проблема, которая тут есть -- преобразование чисел с плавающей точкой. Здесь для переносимой реализации нужна поддержка со стороны платформы. Обычно, такая поддержка есть в виде _fcvt и тому подобных функций. На худой конец, можно задействовать sprintf.


ME>А почему бы тебе не спросить все это в gmane.comp.lib.boost.devel и не предложить что-то лучше/проще/быстрее/круче?


Пардон, но я не занимаюсь разработкой boost и даже его не использую. Зачем мне что-то куда-то писать?

ME>На rsdn все это неконструктивно и похоже на пустой треп за глаза.


Ну почему. Есть проблема -- конвертировать число в строку. У этой проблемы есть несколько решений, мы эти решения здесь обсуждаем и приводим их достоинства и недостатки. На основе этого обсуждения можно принять то или иное решение. Цель ведь состоит не в том, чтобы опустить кого-то, а в том, чтобы выбрать лучшую альтернативу. На сегодня, boost для решения этой задачи -- не лучшая альтернатива.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[8]: IntToStr в Visual
От: Dark Angel Украина  
Дата: 20.12.04 07:35
Оценка: +1 -1
Hello, Шахтер!
You wrote on Sun, 19 Dec 2004 00:10:40 GMT:

ME>> А почему бы тебе не спросить все это в gmane.comp.lib.boost.devel и не

ME>> предложить что-то лучше/проще/быстрее/круче?

Ш> Пардон, но я не занимаюсь разработкой boost и даже его не использую.

Ш> Зачем мне что-то куда-то писать?

Так как rationale для именно такой реализации было выработанно имено там и спор насколько хорошо/эфективно написана реализация должен происходить именно там. Вы boost не разрабатываете, но в этой треде критикуете, а это именно туда, в gmane.comp.lib.boost.devel, за конструктивной критикой.

ME>> На rsdn все это неконструктивно и похоже на пустой треп за глаза.


Ш> Ну почему. Есть проблема -- конвертировать число в строку. У этой

Ш> проблемы есть несколько решений, мы эти решения здесь обсуждаем и
Ш> приводим их достоинства и недостатки. На основе этого обсуждения можно
Ш> принять то или иное решение. Цель ведь состоит не в том, чтобы опустить
Ш> кого-то, а в том, чтобы выбрать лучшую альтернативу. На сегодня, boost
Ш> для решения этой задачи -- не лучшая альтернатива.

Здается мне, что мнение предвзято. Использование boost::lexical_cast<> дает программе единое понятие, которое согласуется с другими cast (семантически) и позволяет не запоминать множество функций для конвертирования одних типов в другие. Это несколько упрощает чтение исходного кода. У него есть свои недостатки, но использование единого и прозрачного понятия для выполнения преобразований в 90% случаев перекрывает их.

With best regards, Konstantin Litvinenko.
Posted via RSDN NNTP Server 1.8
Re: IntToStr в Visual
От: Amethyst  
Дата: 20.12.04 11:39
Оценка:
Вдогонку ещё "чистые" С/C++ варианты. Может пригодится .
1.
unsigned int var;
std::ostringstream txt;

txt << var;
const char* result = txt.str().c_str();


2. воспользоваться функцией itoa().
Почему добро всегда побеждает зло? Потому что историю пишут победители.
Re[2]: IntToStr в Visual
От: korzhik Россия  
Дата: 25.07.05 11:15
Оценка: +1
Здравствуйте, MaximE, Вы писали:

ME>Две фундаментальные вещи:


ME>1. Для перевода в строку — snprintf

ME>
ME>unsigned int temp;
ME>char buf[std::numeric_limits<unsigned int>::digits10 + 1]; // +1 для завершающего 0, для знакого типа добавить еще +1 для знака
ME>snprintf(buf, sizeof(buf), "%u", temp);
ME>

там ещё единичку надо добавить
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.