int main() {
char *s;
s = "String";
cout << s << '\n';
return 0;
}
Класс ostream определяет функции операции вставки для следующих типов указателей:
• const signed char *
• const unsigned char *
• const char *
• void *
He забывайте, что C++ представляет строку, используя указатель на ее местоположение. Указатель может иметь форму имени массива элементов типа char, явного указателя на char или же строки в кавычках. Таким образом, все следующие операторы с cout отображают строки:
char name[20] = "Dudly Diddlemore"; char * pn = "Violet D'Amore"; cout « "Hello!";
cout « name;
cout « pn;
Для определения окончания последовательности отрбражаемых символов методы используют завершающий нулевой символ.
C++ интерпретирует указатель любого другого типа как void * и выводит числовое представление адреса. Если требуется получить адрес строки, необходимо выполнить приведение к другому типу, как показано в следующем фрагменте кода:
int eggs = 12;
char * amount = "dozen";
cout << &eggs; // выводит адрес переменной eggs
cout << amount; // выводит строку "dozen"
cout << (void *) amount; // выводит адрес строки "dozen"
template<typename _CharT, typename _Traits>
inline basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
{
if (!__s)
__out.setstate(ios_base::badbit);
else
__ostream_insert(__out, __s,
static_cast<streamsize>(_Traits::length(__s)));
return __out;
}
Writes count characters to the output sequence from the character array whose first element is pointed to by s. The characters are written as if by repeated calls to sputc(). Writing stops when either count characters are written or a call to sputc() would have returned Traits::eof().
const char*