-2
C++ Primer告訴我s[s.size()]
應該是不可預知的。爲什麼s [0]是C++中空字符串s的空字符串?
但我嘗試了很多次,並將其插入到其他代碼中,s[0]
始終是一個空字符串。但是,s
不是空字符串時,嘗試訪問s[size()]
將引發錯誤。
爲什麼空字符串是特殊的?
C++ Primer告訴我s[s.size()]
應該是不可預知的。爲什麼s [0]是C++中空字符串s的空字符串?
但我嘗試了很多次,並將其插入到其他代碼中,s[0]
始終是一個空字符串。但是,s
不是空字符串時,嘗試訪問s[size()]
將引發錯誤。
爲什麼空字符串是特殊的?
成員對字符串的訪問會產生字符,而不是字符串。
C++ 11個保證s[s.size()]
是0 C++ 17甚至允許你寫入到s[s.size()]
,只要你正在寫的值0:
[關於
operator[](size_type pos)
:]需要:
pos <= size()
。返回:
*(begin() + pos)
ifpos < size()
。否則,返回對charT
對象的引用,其值爲charT()
,其中將對象修改爲除charT()
以外的任何值都會導致未定義的行爲。
(charT()
是standardese爲 「零」。)
此前C++ 17的最後一句不包含詞語 「比charT()
之外的任何值」。這是過分限制的,例如,禁止將strcpy
轉換成正確大小的字符串。
究竟是什麼? – BlueWanderer
請嘗試更清楚地表達您的問題。 *「s [0]總是一個空字符串」*甚至沒有意義,因爲s [0]是一個char字符串,所以它永遠不會是任何類型的字符串,也不會是空的。 –
對不起,我的表達不清楚,因爲英語不是我的母語,英語學習在我的國家並不普遍。 – RevolverOcelot