Из Rules for C++ string literals escape character, ответнулевой символ внутри строки
std::string ("0\0" "0", 3) // String concatenation
работает, потому что эта версия конструктора принимает массив символов Эли; если вы попытаетесь просто передать «0 \ 0» «0» в качестве const char *, он будет рассматривать его как строку C и только скопировать все до нулевого символа.
Означает ли это, что пространство не выделено для целых строк, т. Е. Строка после \ 0 записывается в нераспределенное пространство?
Кроме того, вышеупомянутый вопрос предназначен для строки C++, я наблюдал такое же поведение и для строк c. Являются ли строки c и C++ одинаковыми при добавлении нулевого символа в середине строки во время объявления?
Что вы пытаетесь сделать здесь: Почему вы должны использовать строки, а не только массивы символов? – hugomg
Существует набор строк, которые могут быть представлены в виде массива указателей на char [], но представлены как char [] с \ 0 разделяющими строками и int [] для хранения смещений строк –