информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяВсе любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Может быть, он и удобнее, но я предпочитаю std::string, в частности из-за отсутствия таких вот ударов из-за угла. 08.04.03 19:16  Число просмотров: 1167
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
<programming>
[C++] Хочу из строки получить число... 07.04.03 13:10  
Автор: wade Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В Delphi есть функции IntToStr() и StrToInt(), которые преобразуют число в строку и строку в число. Есть ли аналогичные функции в C++ ?
Пасиб!
[C++] Что мешает 07.04.03 14:26  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> В Delphi есть функции IntToStr() и StrToInt(), которые
> преобразуют число в строку и строку в число. Есть ли
> аналогичные функции в C++ ?
> Пасиб!

Для перегона из строки в число подключай stdlib.h и юзай atoi, atol, atof и иже с ними или strtol, strtod и т.д.

Ну а чтоб перегонять число в строку лучше sprintf не найдешь
[C++] Что мешает 08.04.03 06:02  
Автор: alien <Андрей> Статус: Member
<"чистая" ссылка>
Ну а если используешь классы строк (например AnsiString), то вообще проблем нет:

int n = 12345; AnsiString s; s = n; // !!! преобразование происходит автоматически !!!
[C++] Что мешает 08.04.03 07:54  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
> > int n = 12345; > AnsiString s; > s = n; // !!! преобразование происходит автоматически !!! >
Ну если из строки в число то AnsiString вообще рулит:
AnsiString s=15;
int n=s.ToInt(); //будет исключение при кривой строке
int m=s.ToIntDef(0); //исключения не будет. Будет 0
float k=s.ToDouble();//ну ясно
и еще чтото там есть....
Единственное - atoi, itoa, sprintf меньше занимают и быстрее работают.
[C++] Наивный вопрос. 08.04.03 15:21  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
Отредактировано 08.04.03 15:24  Количество правок: 3
<"чистая" ссылка>
А что делает вышеупомянутый AnsiString, если я напишу так:
char t; // ... AnsiString s1 = t; AnsiString s2 = (int) t;
То есть я догадываюсь об ответе, но хотелось бы знать наверняка.
Если char считается символом, то следующий код работает несколько неожиданно:
template <class N> AnsiString NumberToString(N n) { return n; } // ... for (char t = 1; t < 8; ++t) printf("%s\n", (const char *) NumberToString(t));
Я знаю, что использование char в качестве счетчика - не слишком хорошая идея, тем не менее, передавая char в функцию NumberToString, я все же ожидаю, что он будет оттрактован как число. Но вместо чисел я получу несколько непонятных символов, сопровождающихся эффектным писком в конце.
Если же char в самом верхнем вопросе считается числом, то следующие две записи неравнозначны, что тоже довольно неожиданно:
AnsiString s1 = "c"; AnsiString s2 = 'c';
И то, и другое компилируется, но отловить такую ошибку будет мудрено.
В свете всего вышесказанного я согласен с amirul'ом и предпочитаю семейство atox/strtox. Ну и sprintf для печати, есесно :) Это все, кстати, не вылезая из чистого C.
[C++] Наивный вопрос. 08.04.03 15:43  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 08.04.03 15:45  Количество правок: 1
<"чистая" ссылка>
> А что делает вышеупомянутый AnsiString, если я напишу так:
> > char t; > // ... > AnsiString s1 = t; > AnsiString s2 = (int) t; >
s1 = символ с кодом t
s2 = строковое представление числа t

> То есть я догадываюсь об ответе, но хотелось бы знать
> наверняка.
> Если char считается символом, то следующий код работает
> несколько неожиданно:
> > template <class N> > AnsiString NumberToString(N n) > { > return n; > } > // ... > for (char t = 1; t < 8; ++t) > printf("%s\n", (const char *) NumberToString(t)); >
> Я знаю, что использование char в качестве счетчика - не
> слишком хорошая идея, тем не менее, передавая char в
> функцию NumberToString, я все же ожидаю,
> что он будет оттрактован как число. Но вместо чисел я
> получу несколько непонятных символов, сопровождающихся
> эффектным писком в конце.
он будет оттрактован как символ. хочешь число - явно преобразовывай типы или юзай unsigned char.
> Если же char в самом верхнем вопросе считается числом, то
> следующие две записи неравнозначны, что тоже довольно
> неожиданно:
> > AnsiString s1 = "c"; > AnsiString s2 = 'c'; >
> И то, и другое компилируется, но отловить такую ошибку
> будет мудрено.

> В свете всего вышесказанного я согласен с amirul'ом и
> предпочитаю семейство atox/strtox. Ну и sprintf для печати,
> есесно :) Это все, кстати, не вылезая из чистого C.
ну да, тока ансистринг удобнее
[C++] Может быть, он и удобнее, но я предпочитаю std::string, в частности из-за отсутствия таких вот ударов из-за угла. 08.04.03 19:16  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach