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?
Co to jest łańcuch zakończony znakiem null?
Czym różni się od std::string ?
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?