![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 8 Всего: 39 |
jonie, я сейчас матом буду ругаться. Повторяю, я думал в std::string есть char*-доступ. Посмотрел API, узнал, что только char const*, признал, что был не прав. Вы, судя по всему зная этот API, вместо того, чтобы показать на него, начали и продолжаете сыпать терминами. Уймитесь наконец.
И да, в std::string есть C-o-W, но само по себе это не означает, что не может быть предоставлен прямой доступ к данным. Важно, что нет интерфейса получения этого доступа. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 1 Всего: 23 |
Пример работы программы:
replace_e("1e4") -> "10000" replace_e("12e2") -> "1200" Вы видимо меня не поняли. тогда так перепишу:
Добавлено через 57 секунд mes, прастите. Плохо сформулировал задачу. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
передача параметра через константную ссылку поможет избавить от лишнего копирования.. сейчас вначале копируется исходная строка, а потом заменяется.. |
|||
|
||||
jonie |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
если вам нужна скорость, то вот это
.... в общем подумать можно и еще, но поздно. ЗЫ: подумайте насчет передачи строки в функцию по ссылке, если у вас не c++0x, то копирования избежите... UPD: mes опередил) UPD2:
UPD3: делайте void resize ( size_t n, char c ); вот и пропал append ... Это сообщение отредактировал(а) jonie - 16.4.2010, 01:06 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 1 Всего: 23 |
Почему? Разве resize изменяет физический объем буфера? На счет константной ссылки согласен.
Скорость хорошо, но пользоваться сишной библиотекой не хочу категорически. Это сообщение отредактировал(а) ИванМ - 16.4.2010, 01:20 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Я правильно понял, что строку в которой представлено число в формате exponential надо перевести в строку в которой представлено число в формате fixed?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
ИванМ, boost::lexical_cast<int> .... W4FhLF, да, как потом выяснилось именно это и хотел автор Это сообщение отредактировал(а) jonie - 16.4.2010, 07:37 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 1 Всего: 23 |
Почти. Может быть только такой вид: xxxEyyy. xxxE+yyy и xxxE-yyy не допускается. Нельзя, числа могут быть неограниченной размерности |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
n тут представляет количество нулей грубо говоря. Ты же сам юзаешь такую же конструкцию:
Если будет переполнение int'a (при количестве нулей больше 0x7FFFFFFF), то оно будет и в твоём случае (я что-то сомневаюсь, что ты будешь хранит строки по 2.5 гига хранить на число.). Но boost::lexical_cast более лаконичный и быстрый способ. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 1 Всего: 23 |
W4FhLF, не так понял, прошу прощения. Я думал, мне предлагают исходное число перевести. А так да, воспользуюсь lexical_cast, если он быстрее.
Вот уже код сократился в несколько раз) Это сообщение отредактировал(а) ИванМ - 16.4.2010, 16:42 |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 1 Всего: 23 |
Если больше нечего предложить, тему закрываю. Всем спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |