std::endl vs. '\n'
От: igna Россия  
Дата: 23.12.05 09:01
Оценка:
Манипулятор endl выводит '\n' (или L'\n') и записывает содержимое буфера.
Если запись буфера не нужна, и используются строковые литералы определенной ширины (ordinary/narrow string literal или wide string literal), независимость endl от ширины строковых литералов не используется, а запись буфера только замедляет вывод:

cout << "Здравствуйте, меня зовут " << myName << endl;
cout << "Мой e-mail адрес " << myEMailAddress << endl;
cout << "Моя страница в интернете " << myWebSite << endl;
// и т. д.

Наверное в вышеприведенном примере лучше использовать '\n'. А вы как думаете?
Re: std::endl vs. '\n'
От: korzhik Россия  
Дата: 23.12.05 09:02
Оценка: +1
Здравствуйте, igna, Вы писали:

I>Манипулятор endl выводит '\n' (или L'\n') и записывает содержимое буфера.

I>Если запись буфера не нужна, и используются строковые литералы определенной ширины (ordinary/narrow string literal или wide string literal), независимость endl от ширины строковых литералов не используется, а запись буфера только замедляет вывод:

I>cout << "Здравствуйте, меня зовут " << myName << endl;

I>cout << "Мой e-mail адрес " << myEMailAddress << endl;
I>cout << "Моя страница в интернете " << myWebSite << endl;
I>// и т. д.

I>Наверное в вышеприведенном примере лучше использовать '\n'. А вы как думаете?


я использую '\n'.
Ну это конечно копеешная оптимизация, но у меня привычка просто.
Re[2]: std::endl vs. '\n'
От: sch  
Дата: 23.12.05 13:29
Оценка:
K>я использую '\n'.
K>Ну это конечно копеешная оптимизация, но у меня привычка просто.

Между std::endl и '\n' есть небольшая разница: дело в том, что std::endl(os) равнозначен os.put(os.widen('\n')); os.flush();
Re[3]: std::endl vs. '\n'
От: korzhik Россия  
Дата: 23.12.05 13:33
Оценка:
Здравствуйте, sch, Вы писали:


K>>я использую '\n'.

K>>Ну это конечно копеешная оптимизация, но у меня привычка просто.

sch>Между std::endl и '\n' есть небольшая разница: дело в том, что std::endl(os) равнозначен os.put(os.widen('\n')); os.flush();


Ну это я знаю, поэтому и привычку выработал писать '\n'.
Но ИМХО оптимизация это копеешная.
Re[4]: std::endl vs. '\n'
От: sch  
Дата: 23.12.05 13:34
Оценка: 1 (1) :)
> Ну это я знаю, поэтому и привычку выработал писать '\n'.
> Но ИМХО оптимизация это копеешная.
Поверь мне, я ни в коем случае не хотел ставить под сомнение твою эрудицию
Posted via RSDN NNTP Server 2.0
Re: std::endl vs. '\n'
От: Centaur Россия  
Дата: 23.12.05 15:49
Оценка: 6 (1)
Здравствуйте, igna, Вы писали:

I>Манипулятор endl выводит '\n' (или L'\n') и записывает содержимое буфера.

I>Если запись буфера не нужна, и используются строковые литералы определенной ширины (ordinary/narrow string literal или wide string literal), независимость endl от ширины строковых литералов не используется, а запись буфера только замедляет вывод:

I>cout << "Здравствуйте, меня зовут " << myName << endl;

I>cout << "Мой e-mail адрес " << myEMailAddress << endl;
I>cout << "Моя страница в интернете " << myWebSite << endl;
I>// и т. д.

I>Наверное в вышеприведенном примере лучше использовать '\n'. А вы как думаете?


За разницу между std::endl и '\n' всё сказал Scott Meyers в статье The little <i>endl</i> that couldn’t.
Re[2]: std::endl vs. '\n'
От: gear nuke  
Дата: 24.12.05 08:23
Оценка:
Здравствуйте, Centaur, Вы писали:

C>За разницу между std::endl и '\n' всё сказал Scott Meyers в статье The little <i>endl</i> that couldn’t.


Интересно, зачем тогда он использует лишний оператор:
cerr << "Sorry, unlike K&R C, in ANSI C the"
     << "numeral ’8’ is not an octal digit.\n";
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: std::endl vs. '\n'
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 27.12.05 11:05
Оценка:
Здравствуйте, igna, Вы писали:

I>Манипулятор endl выводит '\n' (или L'\n') и записывает содержимое буфера.

I>Если запись буфера не нужна, и используются строковые литералы определенной ширины (ordinary/narrow string literal или wide string literal), независимость endl от ширины строковых литералов не используется, а запись буфера только замедляет вывод:

I>cout << "Здравствуйте, меня зовут " << myName << endl;

I>cout << "Мой e-mail адрес " << myEMailAddress << endl;
I>cout << "Моя страница в интернете " << myWebSite << endl;
I>// и т. д.

I>Наверное в вышеприведенном примере лучше использовать '\n'. А вы как думаете?


Один раз я натолкнулся на ситуацию, когда запись в поток '\n' отработала не так как я ожидал (строка не перевелась). Замена '\n' на std::endl иправило ситуацию. Может быть это был мой глюк, может глюк той реализации, которую я использовал, но это на всегда отбило у меня желание писать так: out << "\n". Тем более что, как сказал korzhik, оптимизация копеечная...
Могу добавить только, что это не был простой вывод на консоль, а то ли в файловый поток, то ли в stringstream с последующим выводом последнего в файловый поток... Платформу точно не помню — или VC 6.0 с дефолтной stl`кой или какой-то компилятор с stl`кой для мобильных девайсов, типа Code Warrior...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.