информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медАтака на InternetСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





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

int n = 12345; AnsiString s; s = n; // !!! преобразование происходит автоматически !!!
<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