STL只有一個字符串類,basic_string。一個basic_string管理一個以0做結束符的字符串數組。字符的類型是basic_string模般的參數。總的來說,一個basic_string類型的變量應該被當作不透明的對象。你可以得到一個指向內部緩衝區的只讀指針,但是任何寫操作必須使用basic_string的操作符和方法。
basic_string有兩個預定義的類型:包含char的string類型和包含wchar_t的wstring類型。這裏沒有內置的包含TCHAR的類型,但是你可以使用下面列出的代碼來實現。
// Specializations typedef basic_string tstring; // string of TCHARs // Constructing string str = "char string"; // construct from a LPCSTR wstring wstr = L"wide char string"; // construct from a LPCWSTR tstring tstr = _T("TCHAR string"); // construct from a LPCTSTR // Extracting data LPCSTR psz = str.c_str(); // read-only pointer to str''s buffer LPCWSTR pwsz = wstr.c_str(); // read-only pointer to wstr''s buffer LPCTSTR ptsz = tstr.c_str(); // read-only pointer to tstr''s buffer不像_bstr_t,一個basic_string變量不能在字符集之間直接轉換。然而,你可以傳遞由c_str()返回的指針給另外一個類的構造函數(如果這個類的構造函數接受這種字符類型)。例如:
// Example, construct _bstr_t from basic_string _bstr_t bs1 = str.c_str(); // construct a _bstr_t from a LPCSTR _bstr_t bs2 = wstr.c_str(); // construct a _bstr_t from a LPCWSTR