std::string a = "hello";
std::cout << a.c_str(); // 輸出 "hello" 而非位址
明明 `c_str()` 回傳 `const char*`,為何不印位址?
std::cout << static_cast<const void*>(a.c_str())。template<class CharT, class Traits>
std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, const char* s);
`c_str()` 確實回傳指標,但 `std::cout` 針對 `const char*` 有特殊多載,將其視為 C 字串處理。這是 C++ 標準庫為了相容 C 風格字串輸出而刻意設計的便利性特性。