std:string и \0 в самом конце
От: Shmj Ниоткуда  
Дата: 30.03.25 14:13
Оценка:
Ну вопрос не новый: https://stackoverflow.com/questions/11752705/does-stdstring-have-a-null-terminator

Но как-то мнения расходятся.

std::span messageSpan(reinterpret_cast<uint8_t*>(jsonText.data()), jsonText.size() + 1);


Так могу я написать и гарантировать что не вылезу за пределы памяти, которые контролирует строка std::string jsonText?

GPT говорит что начиная с C++17 стандарт гарантирует дополнительный байт 0 в самом конце и можно на это опираться.
=сначала спроси у GPT=
Re: std:string и \0 в самом конце
От: Videoman Россия https://hts.tv/
Дата: 30.03.25 18:36
Оценка: 10 (2) +4
Здравствуйте, Shmj, Вы писали:

Начиная с С++11, data() const полностью эквивалентен c_str(), возвращает С-строку с терминальным нулём в конце.
Через data() можешь модифицировать строку в пределах size(), но нельзя модифицировать сам \0 (неопределённое поведение).
Отредактировано 30.03.2025 18:37 Videoman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.