標準字串
在使用 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。