|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
что-то я наткнулся на непонятку внезапно... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ЧЯДНТ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 05:04 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
По выходу из функции, все объекты объявленные внутри нее - уничтожаются. То есть когда ты пытаешься вернуть str.c_str() ты возвращаешь указатель на внутренний буффер уничтоженного объекта. А когда возвращаешь весь объект целиком - он возвращается через копирование. Объект str лежащий на стеке функции _out() уничтожается, но перед этим делается копирование в объект str лежащий на стеке функции main(). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 05:41 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Зря ломаешь копья. Это не С. Это С++. Компилятор поправит твой код и он будет выглядить примерно вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 11:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
OoCc, увеличивать область видимости для того, что бы работали костылики - это очень плохой подход. язык си плас плас объектно ориентированный. соответственно впереди ОО а потом уже технологии, языки, конкретные тех. решения. а не наоборот. правильная подсказка была бы с передачей функции ссылки на параметр из вызывающего слоя. тогда логика понятна - функция работает с той переменной, жизнь которой определяет вызывающий. (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 11:42 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух, Все компиляторы оптимизируют это устраняя копирование возвращаемого значения, и по факту функция работает с тем экземпляром куда результат присваивается в вызывающем коде (RVO). А начиная с С++17 это обязательное поведение. Так что можете спокойно возвращать строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 12:38 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Какая необходимость в прикладном коде использовать ASCIIZ ? Вообще нету. Нет я могу придумать кейс ТОЛЬКО когда тебе надо вызвать функцию операционной системы и она (эта функция) не имплементирована в твоей прикладной библиотеке или фреймворке вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 12:49 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
kolobok0 OoCc, увеличивать область видимости для того, что бы работали костылики - это очень плохой подход. язык си плас плас объектно ориентированный. соответственно впереди ОО а потом уже технологии, языки, конкретные тех. решения. а не наоборот. правильная подсказка была бы с передачей функции ссылки на параметр из вызывающего слоя. тогда логика понятна - функция работает с той переменной, жизнь которой определяет вызывающий. (круглый) Я не призываю писать такой код. Компилятор это сделает сам. И совсем не обязательно именно такой. Мой поинт был чтобы полудух не заморачивался и не думал за компилятор слишком много. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 13:26 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
OoCc Зря ломаешь копья. Это не С. Это С++. Компилятор поправит твой код и он будет выглядить примерно вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
и что тут возвращает компилятор?! как str попал в main() ? mayton Какая необходимость в прикладном коде использовать ASCIIZ ? Вообще нету. Нет я могу придумать кейс ТОЛЬКО когда тебе надо вызвать функцию операционной системы и она (эта функция) не имплементирована в твоей прикладной библиотеке или фреймворке вообще. имеешь ввиду, зачем связываться с char* ? чтобы отправить в socket конкретно - в send() ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 15:56 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух mayton Какая необходимость в прикладном коде использовать ASCIIZ ? Вообще нету. Нет я могу придумать кейс ТОЛЬКО когда тебе надо вызвать функцию операционной системы и она (эта функция) не имплементирована в твоей прикладной библиотеке или фреймворке вообще. имеешь ввиду, зачем связываться с char* ? чтобы отправить в socket конкретно - в send() Что за протокол? Raw? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:12 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
да обычный стек TCP/IP (AF_INET) надо клиент-серверную архитектуру организовать на C++ как это ещё сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:22 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я пытаюсь понять - это прикладное или системное программирование? Если системное - то у меня нет вопросов и я удаляюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:24 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
ну очевидно же, что это низкоуровневый задел а ты с сокетами через boost::asio ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:42 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я с сокетами уже 15 лет вообще никак. Я - прикладник. У меня - Soap/Http/Rest/GraphQL. Из самого низкоуровневого был SNMP. Это - ближе всего к пакетам. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:05 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Http - это сокеты ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:28 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:35 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
Ссылка крутая. Но ГуглТранслейт не справился со словом "Fucken". Это Вы где вычитали? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:39 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
А зачем вы гуглите то что я пишу? Что там гуглить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:46 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton А зачем вы гуглите то что я пишу? Что там гуглить? Я просто впервые увидел такое слово. Но справился другой переводчик. Значение слова -- как и ожидалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:51 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
ну конечно в интерфейсе нет но технически ты работаешь с сокетом т.е. на мой вопрос "как ты работаешь с сокетами" есть ответ - через API ну т.е. тот же самый boost::asio, только другой API хотя там внутри как раз он и может оказаться ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:58 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух mayton Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
ну конечно в интерфейсе нет но технически ты работаешь с сокетом т.е. на мой вопрос "как ты работаешь с сокетами" есть ответ - через API ну т.е. тот же самый boost::asio, только другой API хотя там внутри как раз он и может оказаться Когда мы говорил об ASCIIZ я имел в виду что на прикладном уровне (а Http - это уже прикладной) вам не нужны примитивы ОС, сокеты, или не дай бох блочные или символьные устройства. Это всё - завёрнуто в библиотеки и наружу выходят std::string как базовый тип данных для представления бизнес-информации. 99% это так. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
да, и это правильно - использовать готовые библиотеки, а не городить свои меньше кода = меньше ошибок и я сам к этому стремлюсь но не всегда получается... а ведь string приходится копировать в char* ? именно copy всей строки надо будет сделать, чтобы в сокет передать... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:19 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Как это соотносится с непониманием времени жизни переменной? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:22 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух да, и это правильно - использовать готовые библиотеки, а не городить свои меньше кода = меньше ошибок и я сам к этому стремлюсь но не всегда получается... Я рекомендую всячески сопротивляться добавлению в проект каждой новой библиотеки. Это от разработчика PVS Studio, я согласен абсолютно -- с каждым символом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:25 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудухи что тут возвращает компилятор?! как str попал в main() ? Ты меня спрашиваешь? Это твой код. полудухда обычный стек TCP/IP (AF_INET) надо клиент-серверную архитектуру организовать на C++ как это ещё сделать? Найти человека который знает и умеет это делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:31 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
petrav полудух да, и это правильно - использовать готовые библиотеки, а не городить свои меньше кода = меньше ошибок и я сам к этому стремлюсь но не всегда получается... Я рекомендую всячески сопротивляться добавлению в проект каждой новой библиотеки. Это от разработчика PVS Studio, я согласен абсолютно -- с каждым символом. Не согласен с точкой зрения. Она - архаична. И ее можно было реплицировать еще в середине 20-го века когда любой программный продукт был железом+ОС+приложением 3 в одном. Современный программный продукт - это зачастую на 90% идея, воплощённая в интеграции системных средств или платформ Amazon/Google/Azure и собственно вашего кода. Которого обычно мало. Ваш код - это по сути клей который склеивает готовые решения в одно. Подход когда вы пилите и свой HttpClient и свой (не дай бох) более сложный драйвер - отбрасывает вас во времени на много спринтов назад и при таком подходе ваши конкуренты вас обойдут и выдадут работающий прототип. Последнее - очень важно. Кто первый вышел на рынок - тот победитель. Сидельцы и народные умельнцы - здесь обычно остаются за бортом. Они - вне рынка ПО. Они неинтересны потому-что они задержались и поезд ушел. Поэтому я очень сильно не поддерживаю С++ - ников в их желании иметь свой "свечной заводик" на любой случай жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:35 |
|
|
start [/forum/topic.php?fid=57&msg=39954673&tid=2017432]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 401ms |
0 / 0 |