Оператор <<
на std::cout
перегружен. Его поведение зависит от типа правильного операнда. (Это фактически несколько разных функций, все названы operator<<
, компилятор решает, какой из них вызывать.)
Если вы дадите ему char*
или const char*
, он обрабатывает операнд как указатель на (первый символ) строки C-стиля и печатает содержимое этой строки:
const char * terry = "hello";
cout << terry; // prints "hello"
Если вы даете ему значение char
, оно печатает это значение как символ:
cout << *terry; // prints "h"
cout << terry[0]; // the same
Если вы указали ему указатель типа void*
, он печатает это значение указателя (в определенном порядке реализации, обычно шестнадцатеричном):
cout << static_cast<const void*>(terry); // prints something like 0x4008e4
Обработка char*
или const char*
как указатель на строку C-стиля - это особый случай, и единственное, что я могу придумать, которое вызывает operator<<
для печати чего-то другого, кроме значения операнда. Причина этого восходит к корням C ++ в C, который не имеет типа «string» и манипулирует строками с помощью указателей char*
.
Существует множество других перегрузок для operator<<
, для различных целочисленные и числовые типы с плавающей запятой, для std::string
и т. д.
Это может быть достигнуто путем определения клавиши --extra-files
в разделе параметров задания.
В связи с этим пути к файлам (запятые в случае нескольких файлов), упомянутые в значении этого ключа, переносятся в среду времени выполнения во время выполнения. Затем с помощью configparser можно легко получить доступ к файлу как к обычному файлу конфигурации.
Для получения более подробной информации см. https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html
.