, если php установлен как модуль Apache:
apache_request_headers()["Authorization"];
else, перейдите в файл .htaccess и добавьте:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Затем вы можете получить доступ к заголовкам запроса, используя любые из них:
$_SERVER["HTTP_AUTHORIZATION"]; // using super global
ИЛИ
$app->request->headers("Authorization"); // if using PHP Slim
Переменные конечные символы строки не имеют значения, предполагая, что файл открыт в текстовом режиме, который является тем, что Вы получаете, если Вы не просите двоичный файл. Скомпилированная программа выпишет корректную вещь для системы, скомпилированной для.
единственная разница - то, что std::endl
сбросы буфер вывода, и '\n'
не делает. Если Вы не хотите буфер, сбрасываемый часто, используйте '\n'
. Если Вы делаете (например, если Вы хотите получить весь вывод, и программа нестабильна), используйте std::endl
.
У меня всегда была привычка только к использованию станд.:: endl, потому что для меня легко видеть.
Они оба запишут соответствующий символ (символы) конца строки. В дополнение к этому endl заставит буфер фиксироваться. Вы обычно не хотите использовать endl при выполнении файлового ввода-вывода, потому что ненужные фиксации могут повлиять на производительность.
Могли бы быть проблемы производительности, std::endl
силы сброс потока вывода.
Различие может быть проиллюстрировано следующим:
std::cout << std::endl;
эквивалентно [1 114]
std::cout << '\n' << std::flush;
Так,
std::endl
, Если Вы хотите вызвать непосредственный сброс к выводу. \n
, если Вы волнуетесь по поводу производительности (который является, вероятно, не случаем, если Вы используете <<
оператор). я использую \n
на большинстве строк.
Тогда использование std::endl
в конце абзаца (но это - просто привычка и не обычно необходимое).
Вопреки другим требованиям, \n
символ отображается на корректном конце платформы последовательности строки, только если поток идет в файл (std::cin
и std::cout
являющийся особенным, но все еще файлы (или подобный файлу)).
Не грандиозное предприятие, но endl не будет работать в повышение:: лямбда .
(cout<<_1<<endl)(3); //error
(cout<<_1<<"\n")(3); //OK , prints 3
Там подразумевается другой вызов функции, если вы собираетесь использовать std :: endl
a) std::cout << "Hello\n";
b) std::cout << "Hello" << std::endl;
а) один раз вызывает оператор <<
.
б) дважды вызывает оператора <<
.
Если вы используете Qt и endl, вы можете случайно использовать неправильный endl
, случилось со мной сегодня, и я был похож на ..WTF ??
#include <iostream>
#include <QtCore/QtCore>
#include <QtGui/QtGui>
//notice that i dont have a "using namespace std;"
int main(int argc, char** argv)
{
QApplication qapp(argc,argv);
QMainWindow mw;
mw.show();
std::cout << "Finished Execution !" << endl << "...";
// Line above printed: "Finished Execution !67006AB4..."
return qapp.exec();
}
Конечно, это была моя ошибка, так как я должен был написать std :: endl
, , но если вы используете * endl
, qt и с использованием пространства имен std;
зависит от порядка включаемых файлов, будет ли использоваться правильный endl
.
Конечно, вы можете перекомпилировать Qt для использования пространства имен, поэтому вы получите ошибку компиляции для приведенного выше примера.
РЕДАКТИРОВАТЬ: Забыл упомянуть, Qt endl
объявлен в "qtextstream.h", который является частью QtCore
* EDIT2: C ++ выберет правильный endl
, если вы иметь с использованием
для std :: cout
или пространства имен std
, поскольку std :: endl
находится в том же пространстве имен, что и ] std :: cout
, механизм ADL C ++ выберет std :: endl
.