Size: a a a

2020 August 11

АР

Андрей Руссков... in pro.cxx
может вернуть прям в себя, поэтому аккуратнее с сохранением c_str() и последующими мувами строки
источник

d

d7d1cd in pro.cxx
Спасибо. Просто в памяти почему-то устойчиво хранится, что создаётся копия и уже на нее возвращаться указатель... Хотя это и бред ))
источник

d

d7d1cd in pro.cxx
Андрей Руссков
может вернуть прям в себя, поэтому аккуратнее с сохранением c_str() и последующими мувами строки
Ок. Спасибо!
источник

AP

Antony Polukhin in pro.cxx
Blue Heart
@antoshkka, книга славная, большое спасибо за труд на доступном пониманию языке)
Спасибо! Рад что вам нравится!
источник

ГH

Гласси Hudobin in pro.cxx
d7d1cd
Спасибо. Просто в памяти почему-то устойчиво хранится, что создаётся копия и уже на нее возвращаться указатель... Хотя это и бред ))
Раньше в каких-то реализациях '\0' добавлялся только при c_str(). А потом этот метод сделали const по стандарту, копий/резайзов в этот момент не создается.
источник

BH

Blue Heart in pro.cxx
Antony Polukhin
Спасибо! Рад что вам нравится!
Некоторые вещи оттуда необходимы в работе как никогда
источник

AP

Alexander Potapov in pro.cxx
Гласси Hudobin
Раньше в каких-то реализациях '\0' добавлялся только при c_str(). А потом этот метод сделали const по стандарту, копий/резайзов в этот момент не создается.
значит ли это, что data() делает то же самое?
источник

AT

Andrew Titov in pro.cxx
Гласси Hudobin
Раньше в каких-то реализациях '\0' добавлялся только при c_str(). А потом этот метод сделали const по стандарту, копий/резайзов в этот момент не создается.
Constness и копирование содержимого, кажется, никак не связаны.
источник

ГH

Гласси Hudobin in pro.cxx
Alexander Potapov
значит ли это, что data() делает то же самое?
Нет, data() не обещает '\0'.
источник

ГH

Гласси Hudobin in pro.cxx
Andrew Titov
Constness и копирование содержимого, кажется, никак не связаны.
в с++11 добавили noexcept.
источник

O

Ofee in pro.cxx
Гласси Hudobin
Нет, data() не обещает '\0'.
С C++11 должен, согласно стандарту, делать то же самое, что и c_str()
C cppref: The returned array is null-terminated, that is, data() and c_str() perform the same function
источник

RP

Roman Proskuryakov in pro.cxx
Blue Heart
@antoshkka, книга славная, большое спасибо за труд на доступном пониманию языке)
Подскажете как называется?
источник

AT

Andrew Titov in pro.cxx
Гласси Hudobin
в с++11 добавили noexcept.
А вот это действительно аргумент.
источник

BH

Blue Heart in pro.cxx
Roman Proskuryakov
Подскажете как называется?
источник

D

Danya in pro.cxx
Roman Proskuryakov
Подскажете как называется?
источник

BH

Blue Heart in pro.cxx
Переслано от Antony Polukhin
источник

RP

Roman Proskuryakov in pro.cxx
Спасибо
источник

BH

Blue Heart in pro.cxx
Переслано от Antony Polukhin
Как всегда, все примеры можно позапускать онлайн https://apolukhin.github.io/Boost-Cookbook/ru/
источник

BH

Blue Heart in pro.cxx
Куда вводить промокод Boost25, я не нашёл, но она и так со скидкой)
источник

AP

Antony Polukhin in pro.cxx
Alexander Potapov
значит ли это, что data() делает то же самое?
C C++11 все std::string должны хранить своё содержимое с '\0' на конце. Поэтому data() и c_str() для std::string - синонимы

Однако советую использовать правильные функции, чтобы лучше самодокументировать код:
SomeApi(str.data(), str.size()); // видно что 0 ноль не требуется
SomeApi(str.c_str()); // дополнительный хтинт, что 0 требуется


Это сильно поможет при рефакторинге, когда вы замените string на string_view (который не обязан быть нуль терминированным), то компилятор сам наругается на c_str() и поможет найти проблемы
источник