Строковый литерал не является объектом std::string
, это массив const char
.
"This is a string literal"
имеет тип const char[25]
.
В большинстве ситуаций, включая эту,массив неявно превращается в указатель на его первый элемент, и существует operator<<
перегрузка для const char*
.
Довольно странно, что «строка» означает несколько разных вещей в C ++, но через некоторое время (ивыдергивание волос и скрежет зубов) предполагаемый смысл будет понятен из контекста.