![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Demetry |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 16.4.2003 Репутация: нет Всего: нет |
А как перевести из стринга в int ?
Пробовал из стринга в чар а потом из чара в инт, но окакзалось что я и в чар нормально перевести не могу и следовательно в инт совсем не те числа получаются. Помогите. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
На форуме уже был такой вопрос... поискать лень чтоли?
itoa atoi А вообще, можно и свою написать... з.ы. стринг нельзя перевести в чар... потому как стринг - это много чар. =) -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
а что ты хочешь получить. К предложению baa добавлю sscanf(.....)
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
kruchinin |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 19.4.2003 Репутация: нет Всего: нет |
Совет:
не используй каких-то заумных ф-ций все и так элементарно! Например у тебя есть стринг: char *s; //в котором записано число '"1234" int i=0; int j=0; do { j++; if (j==strlen(s)) break; i*=10; i+=s[j-1]-48; }while(true); |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
kruchinin велосипед изобретаеш...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
fk_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Хех, а я то думал что string С++ - это массив char
![]() kruchinin: можно и проще ![]() ![]() |
|||
|
||||
kruchinin |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 19.4.2003 Репутация: нет Всего: нет |
Можно конечно проще, но не всегда быстрее и (Главное!) некоторые функции из библиотеки stdlib.h в некоторых ситуациях глючат.
|
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
kruchinin зачем структуроное программирование нужно знаешь?
![]() ![]() Это сообщение отредактировал(а) DENNN - 1.5.2003, 18:41 |
|||
|
||||
Artiom |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1031 Регистрация: 11.3.2003 Где: Минск\Баку Репутация: нет Всего: 17 |
Отрывок из MSDN
-------------------- Если тебя жизнь трахает, значит, ты ещё живой |
|||
|
||||
Torin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.3.2003 Репутация: нет Всего: нет |
Почему бы тебе не попробовать StrToInt().
|
|||
|
||||
aMiGo! |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Torin, функция StrToInt() постовляется только с Builder'ом, а в стандартную библиотеку С++ она не входит, а оптималные для этого функции типа atoi и atoi64.
З.Ы. а картинку зря поменял, та была лучше... --------------------
With the best regards, Anton |
|||
|
||||
Unregistered |
|
|||
Unregistered |
sscanf: performs formatted input from a string
int sscanf(const char *buffer, const char *format, ...); Prototype in stdio.h Returns the number of input fields successfully scanned, converted, and stored. If sscanf attempts to read past end of buffer, the return value is EOF. See also scanf fscanf |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
kruchinin, а чем твой код круче atoi? Тем более есле говорить о скорости. Незачем каждый раз strlen вызывать и использовать индексы в массиве. Если и писать самому, то наверно, что-то вроде:
char *s; //в котором записано число '"1234" char *c = s; //указатель на символ строки register int i = 0; while© { i *= 10; i += (int)(*c - '0'); c++; } Кстати, этот код не понимает отрицательных чисел, а это минус (простите за каламбур). С минусом: char *s; //в котором записано число '"1234" char *c = s; //указатель на символ строки register int i = 0; if(*c == '-') c++; while© { i *= 10; i += (int)(*c - '0'); c++; } if(*s == '-') i = -i; Результат будет неожиданным, если кроме цифр будет ещё что-то, надо добавлять проверку в while (простите увлёкся)... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |