49

Herb Sutter は、2008 年の彼のサイトへの投稿で、次のように述べています。

C++0x でこれをさらに強化し、null 終了を要求し、同時実行性に関連する理由からコピー オン ライトの実装を禁止するという積極的な提案があります。ここに論文があります:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html。この論文の提案の 1 つまたは両方が採用される可能性が高いと思いますが、次の 1 回か 2 回の会議でわかります。

C++11 が std::string の内容が連続して格納されることを保証するようになったことは知っていますが、最終ドラフトで上記を採用しましたか?

のようなものを使用しても安全&str[0]ですか?

4

3 に答える 3

53

はい。C++0x FDIS 21.4.7.1/1 に従って、std::basic_string::c_str()返さなければなりません

for each inのpようなポインター。p + i == &operator[](i)i[0,size()]

これは、string が与えられたs場合、 によって返されるポインターs.c_str()が string ( ) の最初の文字のアドレスと同じでなければならないことを意味し&s[0]ます。

于 2011-05-20T20:30:25.400 に答える