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 i wymagać zakończenia null i ewentualnie zakazać implementacji copy-on-write, z powodów związanych z współbieżnością. Oto artykuł: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html . Myślę, że jedna lub obie propozycje zawarte w tym dokumencie prawdopodobnie zostaną przyjęte, ale zobaczymy na następnym posiedzeniu lub dwa.

Wiem, że C++11 gwarantuje teraz, że zawartość std::string zostanie zapisana w sposób ciągły, ale czy przyjęli powyższe w ostatecznym szkicu?

Czy teraz będzie bezpiecznie używać czegoś takiego jak &str[0]?

Author: Xeo, 2011-05-21

1 answers

Tak. W C++0x FDIS 21.4.7.1 / 1, std::basic_string::c_str() musi zwracać

Wskaźnik p taki, że p + i == &operator[](i) dla każdego i w [0,size()].

Oznacza to, że dany łańcuch s, Wskaźnik zwracany przez s.c_str() musi być taki sam jak adres początkowego znaku w łańcuchu (&s[0]).

 46
Author: James McNellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-20 20:30:25