CEO SOVAZ Corp.
|
||||||
1 | ||||||
Моя реализация функции перевода string в int21.12.2012, 18:23. Показов 7302. Ответов 57
P.S. Пишите предложения по улучшению этой функции Добавлено через 5 минут Актуальна Добавлено через 5 минут Вверх
0
|
21.12.2012, 18:23 | |
Ответы с готовыми решениями:
57
Моя реализация функции перевода STRING в DOUBLE Реализация функции char *padl(const char *string, int len, int c=' ') Моя реализация алгоритма перевода числа в пропись (русский язык) Too few parameters in call to 'Lechebnica::AddNewElement(int,int,string,string,int,string) |
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
22.12.2012, 05:29 | 21 |
Как минимум есть такая штука (по крайней мере в VS) как guard bytes - некоторые магические значения, которые добавляются до и после выделенной в куче памяти в дебаге. Первый байт этого значения вполне может быть нулём. И тогда нуль-терминал у строки есть, всё вроде хорошо - в дебаге) А в релизе будет access violation (или что-нибудь в этом роде).
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|||||||||||
22.12.2012, 11:17 | 22 | ||||||||||
ты когда нибудь дизасемблировал Debug версию?
как же по твоему отлавливать выход за пределы памяти а самый главный аргумент atoi принимает строку у ТС работает эта конструкция
а откуда он знает сколько зарегистрировал new? а если я так напишу
а если статическую строку дам?
0
|
CEO SOVAZ Corp.
|
||||||
22.12.2012, 11:27 [ТС] | 23 | |||||
Добавлено через 8 минут Вверх
0
|
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
|
||||||
22.12.2012, 12:37 | 24 | |||||
Я так сделал:
0
|
Higher
|
|
22.12.2012, 12:47 | 29 |
только это как бы равно
И вообще, зачем вы пишите все эти велосипеды? Попробуйте написать функцию, которая переводит из любого типа в любой(ну или выдает ошибку компиляции, если это невозможно). Она пишется в ~5 строк.
0
|
CEO SOVAZ Corp.
|
||||||
22.12.2012, 12:48 [ТС] | 30 | |||||
SeregaC++, зачем ты переделал мою программу в худшую сторону
Цикл внутри цикла удлинит время работы программы на порядок. Чем тебе не нравится сравнение:
0
|
CEO SOVAZ Corp.
|
|||||||||||
22.12.2012, 13:27 [ТС] | 35 | ||||||||||
P.S. Я еще проверил память - моя побольше 720кб, а твоя 712кб. Это потому, что я по ссылке не передаю string и в одном месте использую тип double, а не int
Добавлено через 3 минуты
Добавлено через 10 минут
Добавлено через 14 минут Вверх
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
22.12.2012, 13:28 | 36 |
тебе до оптимизации еще пахать и пахать
например при каждой итерации проверяем значит надо вынести за цикл зачем это сравнение которое дублирует следующая строчка
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
22.12.2012, 13:30 | 38 |
Не по теме: Из велосипедов я плюсанул бы за свою реализацию STL. Полезнее будет.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
22.12.2012, 13:51 | 39 | |||||
1
|
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
||||||
22.12.2012, 16:04 | 40 | |||||
Сообщение от ValeryS
cout вывел мусор пока случайно не наткнулся на пустой байт. думаю, на этом спор исчерпан. это делается не "занулением". new резервирует необходимое кол-во байт в незанятой памяти. компилятор это число запоминает и при попытке изменить значение ячейки ОП вне выделенного числа байт выдает ошибку. ничего за ее пределами он не "зануляет". это неэффективный расход памяти и опасно в конце концов. можно попасть не в свою память и что-нибудь важное "занулить".
Сообщение от ValeryS
1. atoi игнорирует символы, не являющиеся числом. грубо говоря, в данной ситуации, он не обращает внимания на весь тот мусор, что лежит после 1 ого числового символа. 2. сканирует память до первого встретившегося \0. а он рано или поздно там встретиться. только вот сколько ему придется прочитать для этого байт - черт его знает. вот чтобы не пришлось читать лишнюю память, в спецификации и требуется \0 в конце. Добавлено через 4 минуты
Сообщение от ValeryS
0
|
22.12.2012, 16:04 | |
22.12.2012, 16:04 | |
Помогаю со студенческими работами здесь
40
Метод int MmPp(string str) для перевода строковой даты в число Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population Функция isspace и тип string: Не существует подходящей функции преобразования из "std::string" в "int" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |