null-terminated

Jakie jest uzasadnienie dla ciągów zakończonych znakiem null?

Mimo, że kocham C i c++, nie mogę się powstrzymać od podrapania się po głowie przy wyborze null zakończonych ciągów: Leng ... czone Null ciągi po prostu przyklejają null tam, gdzie ma być nowy koniec, prefiksy długości po prostu odejmują od prefiksu.)

Dlaczego null-zakończone ciągi? Lub: null-zakończone vs. znaki + przechowywanie długości

Piszę interpreter języka w C, a mój typ string zawiera atrybut length, Jak Tak: struct String { char* characters; si ... l: myślę o tym, dlaczego C ich używa! Moje pytanie brzmi: czy są jakieś korzyści z wypowiedzenia zerowego, które mi umknęły?

Kopiowanie nie zakończonej null tablicy unsigned char do std:: string

Gdyby tablica była zakończona znakiem null to byłoby całkiem prosto: unsigned char u_array[4] = { 'a', 's', 'd', '\0' }; st ... 'd', 'f' }; Do std::string. Czy jest jakiś sposób, aby to zrobić bez iteracji unsigned char array? Dziękuję wszystkim.

Czy std:: string zawsze będzie zakończony znakiem null W C++11?

Herb Sutter w swoim poście z 2008 roku stwierdza, co następuje:]} Istnieje aktywna propozycja, aby zaostrzyć to w C++0x ... ciągły, ale czy przyjęli powyższe w ostatecznym szkicu? Czy teraz będzie bezpiecznie używać czegoś takiego jak &str[0]?

Dlaczego łańcuchy w C muszą być zakończone znakiem null?

Zastanawiam się, dlaczego tak jest. Jestem chętny, aby dowiedzieć się więcej o językach niskiego poziomu, a ja jestem tylko d ... t mylące mnie. Czy języki takie jak PHP automatycznie kończą ciągi znaków null podczas ich interpretacji i / lub parsowania?