C ++: & ldquo; std :: endl & rdquo; vs & ldquo; \ n & rdquo;

, если 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
511
задан fredoverflow 1 December 2011 в 20:54
поделиться

8 ответов

Переменные конечные символы строки не имеют значения, предполагая, что файл открыт в текстовом режиме, который является тем, что Вы получаете, если Вы не просите двоичный файл. Скомпилированная программа выпишет корректную вещь для системы, скомпилированной для.

единственная разница - то, что std::endl сбросы буфер вывода, и '\n' не делает. Если Вы не хотите буфер, сбрасываемый часто, используйте '\n'. Если Вы делаете (например, если Вы хотите получить весь вывод, и программа нестабильна), используйте std::endl.

433
ответ дан Uli Köhler 1 December 2011 в 20:54
поделиться

У меня всегда была привычка только к использованию станд.:: endl, потому что для меня легко видеть.

2
ответ дан Zee JollyRoger 1 December 2011 в 20:54
поделиться

Они оба запишут соответствующий символ (символы) конца строки. В дополнение к этому endl заставит буфер фиксироваться. Вы обычно не хотите использовать endl при выполнении файлового ввода-вывода, потому что ненужные фиксации могут повлиять на производительность.

18
ответ дан Ferruccio 1 December 2011 в 20:54
поделиться

Могли бы быть проблемы производительности, std::endl силы сброс потока вывода.

40
ответ дан Richard 1 December 2011 в 20:54
поделиться

Различие может быть проиллюстрировано следующим:

std::cout << std::endl;

эквивалентно [1 114]

std::cout << '\n' << std::flush;

Так,

  • Использование std::endl, Если Вы хотите вызвать непосредственный сброс к выводу.
  • Использование \n, если Вы волнуетесь по поводу производительности (который является, вероятно, не случаем, если Вы используете << оператор).

я использую \n на большинстве строк.
Тогда использование std::endl в конце абзаца (но это - просто привычка и не обычно необходимое).

Вопреки другим требованиям, \n символ отображается на корректном конце платформы последовательности строки, только если поток идет в файл (std::cin и std::cout являющийся особенным, но все еще файлы (или подобный файлу)).

220
ответ дан sabbahillel 1 December 2011 в 20:54
поделиться

Не грандиозное предприятие, но endl не будет работать в повышение:: лямбда .

(cout<<_1<<endl)(3); //error

(cout<<_1<<"\n")(3); //OK , prints 3
11
ответ дан Özgür 2 December 2011 в 07:54
поделиться
  • 1
    I' m использующий тот же самый код в точно том же методе (не два метода). Если Вы заменяете drawRect: (старый) с drawRect: (новый) в точно том же месте в коде с помощью того же самого прямоугольника, каждый работает, один doesn' t. I' m все еще озадаченный. Если я нахожу что-нибудь, I' сообщение ll. – Ross Pirtle 9 October 2013 в 16:19

Там подразумевается другой вызов функции, если вы собираетесь использовать std :: endl

a) std::cout << "Hello\n";
b) std::cout << "Hello" << std::endl;

а) один раз вызывает оператор << .
б) дважды вызывает оператора << .

25
ответ дан 22 November 2019 в 22:27
поделиться

Если вы используете 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 .

9
ответ дан 22 November 2019 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: