標準字串
在使用 std::string
之前,你應該包含標題 string
,因為它包含其他標題(例如 iostream
)不包含的函式/運算子/過載。
將 const char *建構函式與 nullptr 一起使用會導致未定義的行為。
std::string oops(nullptr);
std::cout << oops << "\n";
如果 index >= size()
,方法 at
丟擲 std::out_of_range
異常。
operator[]
的行為有點複雜,在所有情況下它都有未定義的行為,如果 index > size()
,但是當 index == size()
:
Version < C++ 11
- 在非 const 字串上,行為未定義 ;
- 在 const 字串上,返回對值為
CharT()
( 空字元) 的字元的引用。
Version >= C++ 11
- 返回對值為
CharT()
( 空字元) 的字元的引用。 - 修改此引用是未定義的行為。
從 C++ 14 開始,不使用 foo
,建議使用 "foo"s
,因為 s
是使用者定義的文字字尾 ,它將 const char*
foo
轉換為 std::string
foo
。
注意:你必須使用名稱空間 std::string_literals
或 std::literals
來獲取文字 s
。