我的問題起因於的libstdc basic_string.h讀取功能長度()和尺寸()的註釋++,即分佈式與Ubuntu 14.04:儘管字符串有空終止字符,std :: string的長度是否一致?
下面的註釋的狀態:
返回數字字符串中的字符,不包括任何空終止符。
對於我來說,這個評論是混亂的情況下,字符串只包含空終止字符,尤其是考慮如何傳統的strlen工作,我擔心編譯器可能會實現字符串,他們不返回大小(),但長度由char_traits :: length()確定。
雖然很明顯,字符串長度是已知的而不需要空終止字符,但傳統字符串的長度的概念與容器的長度不同。我擔心,這可能會在某個時候發生了變化,我想知道在如下面的代碼代碼的風險...
std::string header(4, char{});
assert(header.length() == 4);
...不是完全跨平臺。
我假設它(的問題),必須持有有效的,而且我的假設是從這個reference:
是的,它符合標準。 – Lingxi
可能是一個重複http://stackoverflow.com/questions/12285060/strange-behaviour-of-string-length-function-wrt-null-character –