std::ios_base::sync_with_stdio(false), преимущества, недостатки?

#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> ?

Я хочу знать:

  1. каковы преимущества отключения синхронизации?
  2. Что может пойти не так, если для синхронизации установлено значение 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 Спасибо за ссылку. Теперь я это понимаю.