#c #io #iostream #cstdio
#c #io #iostream #cstdio
Вопрос:
В чем разница между std::ios_base::sync_with_stdio( false );
Против std::cout.sync_with_stdio( false );
и std::cin.sync_with_stdio( false );
?
Какой из них я должен использовать, предполагая, что мой код не использует ни один из потоков C <cstdio>
и использует только потоки C <iostream>
?
Я хочу знать:
- каковы преимущества отключения синхронизации?
- Что может пойти не так, если для синхронизации установлено значение false? Какие вещи я должен принять во внимание, если я хочу отключить синхронизацию?
Комментарии:
1. Один вопрос за вопросом.
Ответ №1:
sync_with_stdio — это static
функция.
итак
std::cout.sync_with_stdio(false);
на самом деле
std::cout, std::ios_base::sync_with_stdio(false);
Комментарии:
1. Однако я не понимаю последнюю строку.
2.
std::cout
вычисляется (и результат отбрасывается). Это в основном эквивалентноstd::ios_base::sync_with_stdio(false);
.3. Так что никакой разницы? Я думал
std::cout.sync_with_stdio(false);
, что отключает синхронизацию только для std ::cout иstd::ios_base::sync_with_stdio(false);
отключает синхронизацию для всех восьми потоковых объектов C . Разве это не так?4. @digito_evo Если вы не понимаете выражение, содержащее запятую, то вам, вероятно, следует прочитать о встроенном операторе запятой в C .
5. @heap underrun Спасибо за ссылку. Теперь я это понимаю.