標準字串

在使用 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

  1. 在非 const 字串上,行為未定義 ;
  2. 在 const 字串上,返回對值為 CharT()字元) 的字元的引用。

Version >= C++ 11

  1. 返回對值為 CharT()字元) 的字元的引用。
  2. 修改此引用是未定義的行為

從 C++ 14 開始,不使用 foo,建議使用 "foo"s,因為 s使用者定義的文字字尾 ,它將 const char* foo 轉換為 std::string foo

注意:你必須使用名稱空間 std::string_literalsstd::literals 來獲取文字 s