Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Необходимо написать функцию f () , которая получает число типа int И возвращает его строковое значение. Апробировано много Вариантов, результат неутешительный. Помогите. // обращение к функции имеет вид: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. СПАСИБО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 20:59 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
CString a; long i=1000; a.Format("%d",i); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 21:06 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 21:24 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 23:01 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, Вам нужна itoa(). Если Вы пишите под Виндами, то у Майкрософтовского компилятора эта функция есть. Проблема в том, что она не определена в ANSI C стандарте. Посоветую Вам набрать itoa в google, там будет тонна ссылок на то как написать свою itoa. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 00:49 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
ZrenBy Код: plaintext 1. 2. 3. 4. Такой фокус не пролезет! void main() { __int64 i=123456789012345678; char s[40]; printf("Result : %11.10d\n", i); printf("Result : %I64d\n", i); } Result : -1506741426 Result : 123456789012345678 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 08:13 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
mikhail_nНасколько я понимаю, Вам нужна itoa(). Если Вы пишите под Виндами, то у Майкрософтовского компилятора эта функция есть. Проблема в том, что она не определена в ANSI C стандарте. Посоветую Вам набрать itoa в google, там будет тонна ссылок на то как написать свою itoa. Зачем ее писать? есть sprintf, кстати, возвращает строку. См. пример выше. И писать-то собс-но ничего не требуется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 08:17 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Насколько я понял человеку не ясно как создаются объекты. static возвращать не обязательно. Чревато для многопоточных приложений. Все просто Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Это одна из проблем, с который ты сталкиваешься в С++, возвращать ссылки на локальные объекты нельзя. И ты вынужден создавать времнный объект. Когда речь заходит о больших объектах цена создания и разрушения которых непомерно высока (по времени и памяти), тогда ты начинаешь думать как сделать по другому. 1) перейти на указатели. То есть Код: plaintext 1. 2. 3. 4. 5. 6. однако использование указателей чревато тем что за указателями надо следить, чтобы не было утечек памяти. Поэтому отсюда следует второй способ 2) использование auto_ptr или других оберток типа boost::shared_ptr, boost::ref. С первым надо быть осторожным, вторые более удобны и потоковобезопасны. 3)есть еще шаблоны выражений (template expresion), MPL самая быстрая библиотека матричных функций построенна именно на этом, можете еще посмотреть boost::ublast или std::valarray. Но последний не доведен до ума. 4) есть еще много приемов позволяющих отложить вызов конструктора/деструктора. Но наиболее удобный - это прием придуманный А.Алексанрдеску - moved contructor. Ему удалось даже реализовать классы реализующие эту технологию. Ну а в будущий стандарт это будет добавлено на уровне средств языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 09:08 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Если нужно вернуть строку для "использовать прям тут" то статическая строка внутри функции - то что нужно. Некоторые библиотечные функции так и делают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 11:08 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
авторЕсли нужно вернуть строку для "использовать прям тут" то статическая строка внутри функции - то что нужно. Некоторые библиотечные функции так и делают. Хоть они так и делают, но они все же потоко-безопастны. Условно говоря, для каждого потока свой буффер. to dwl имхо, чаще всего используется другой вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. автор4) есть еще много приемов позволяющих отложить вызов конструктора/деструктора. Но наиболее удобный - это прием придуманный А.Алексанрдеску - moved contructor. Ему удалось даже реализовать классы реализующие эту технологию. Ну а в будущий стандарт это будет добавлено на уровне средств языка. Про это где-нибудь можно посмотреть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 12:09 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Tracerимхо, чаще всего используется другой вариант см. мой предыдущий пост - пункт 1 и пункт 2. на самом деле это только откладывает проблему, а не решает ее. Ты смотришь на нее в рамках одной функции, попробуй посмотреть в рамках полноценного выражения. str2 + itoa(12) + format2( str3 + str4 ) и т.д. если смотреть на предмет временных объектов (ну или локальных выделений памяти), то будет очень много не нужных выделний (созданий объектов) памяти и последующих освобождений ея. Кстати, этим часто пользуются прграммеры которые пишут на языке с GC (например, ява или Шарп). Я имею ввиду используют для продвижения своего языка, ну или для флейма. Приводится код, где присутсвует цикл большой. внутри цикла ничего, кроме выделить память и освободить ее, нету. Далее сравнивается время работы. Разница в разы иногда и напорядок. Типа С++ какесс. 8-))) а про moved conctructor написано давно. Его уже даже портировали на парочку компилеров в довесок к MSVC http://www.cuj.com/documents/s=8246/cujcexp2102alexandr/alexandr.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 13:08 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
СПАСИБО ВСЕМ ЗА ПОМОЩЬ В ЧАСТНОСТИ участнику форума Tracer Я ВАШ КОД ИСПОЛЬЗОВАЛ, ВСЁ ОК! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 13:39 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Интересная получается ситуация. С одной стороны "некропост", с другой - решение есть довольно свежее. Как то я в 2005-м за этим вопросом не следил, но начиная с MSVS 2010 tuple в нем появились. А в стандарты вошло это с "C++11 standard (ISO/IEC 14882:2011): 20.4 Tuples [tuple]". Для решения этого вопроса нужно использовать <string>, так как обертка "tuple" "char *" и "char[]" в себя не заворачивает. В общем вот такой пример для MSVS >= 2010: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Собственно "string" применил только там где он необходим, что бы было наглядно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 23:49 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Это бот что-ли какой-то, который подымает топики и постит всякую нерелевантную херню? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 00:26 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
На новичка больше похож. Не смотрит на даты сообщений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 00:34 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
maytonНа новичка больше похож. Не смотрит на даты сообщений. да не, он осознает что это "некропост" - о чем прямо пишет. Но его "свежее решение" - вообще никакого отношения к топику не имеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 00:46 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
Почему отношения не имеет, если здесь разговор поднимали про move conctructor. Как раз tuple позволяет в примере объявить его локально в main, а конструктор вызывается в функции. Скоро C++ сравняют с BASIC-ом вообще :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 13:33 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
OblommOffПочему отношения не имеет, если здесь разговор поднимали про move conctructor. Как раз tuple позволяет в примере объявить его локально в main, а конструктор вызывается в функции. Скоро C++ сравняют с BASIC-ом вообще :) Ты считаешь что решению вернуть из функции tuple<string> можно считать хорошим решением для вопроса автора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 13:42 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
OblommOffПочему отношения не имеет, если здесь разговор поднимали про move conctructor. Как раз tuple позволяет в примере объявить его локально в main, а конструктор вызывается в функции. Скоро C++ сравняют с BASIC-ом вообще :) И чем же std::tuple<std::string> в данном случае лучше, чем просто std::string? Вот смотри, вот этот код на C++11 уже использует move семантику за счет RVO: Код: plaintext 1. 2. 3. 4. А явное использование std::move в этом примере "обрезало бы оптимизатору крылья". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 13:55 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
OblommOffПочему отношения не имеет Специально для вас цитирую задачу: авторНеобходимо написать функцию f () , которая получает число типа int И возвращает его строковое значение. Вы хотите сказать что ваша функция которая получает строку и возвращает непоймичто имеет отношение к этой задаче? (Да хоть к какой-нибудь задаче? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 14:22 |
|
||
|
C++ , ФУНКЦИЯ , ВОЗВРАЩАЮЩАЯ СТРОКУ
|
|||
|---|---|---|---|
|
#18+
OblommOffПочему отношения не имеет, если здесь разговор поднимали про move conctructor. Как раз tuple позволяет в примере объявить его локально в main, а конструктор вызывается в функции. Скоро C++ сравняют с BASIC-ом вообще :) В твоём случае (твой код) вся "магия" заключается только в том, чтобы вернуть строку (std::string) по значению. Это можно было бы сделать и без оборачивания строки в tuple. Собственно, весь вопрос топикстатрера и сводится к управлению памятью, если ты хочешь что-то вернуть, то это надо возвращать по значению. Либо "это" возвращать нельзя, а надо записывать в предоставляемый вызывающим кодом буфер. Вот чего не мог постичь топикстартер. А для опытного (ну или хотя бы думающего) программиста на С++ эта проблема выеденного яйца не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=69&tid=2019871]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 316ms |
| total: | 492ms |

| 0 / 0 |
