Misturando fluxos de saída largos e estreitos no mesmo programa
No "C Cookbook", é mencionado que misturar cout e wcout em o mesmo programa não deve ser feito. Este comentário decorre do fato de que os padrões C e C determinam que os fluxos tenham uma orientação e, uma vez que essa orientação seja definida para um fluxo, você não deve misturar operações que sejam incompatíveis com a orientação.
O que isso significa na prática?
Quando cout ou wcout é chamado pela primeira vez, a orientação para stdout é definida. No caso de cout, stdout torna-se um fluxo orientado a bytes e, no caso de wcout, stdout torna-se um fluxo orientado a largura. De acordo com o padrão C [27.4.1] e o padrão C [7.19.2], uma vez definida a orientação de um fluxo, você não deve chamar uma função que não seja compatível com a orientação desse fluxo.
Exceções à regra
No entanto, é importante observar que nem todos os compiladores seguem esse padrão estritamente. Por exemplo, no Visual C 10.0, a função fwide (usada para definir a orientação de um fluxo) não está implementada. Portanto, em Visual C , misturar cout e wcout é permitido.
Da mesma forma, nas primeiras versões do GCC, devido a um bug que foi corrigido, era possível chamar cout e wcout no mesmo programa chamando std ::ios::sync_with_stdio(falso); no início do programa.
No entanto, é importante ter em mente que estas são exceções à regra. Em geral, não é recomendado misturar fluxos de saída largos e estreitos no mesmo programa, pois isso pode levar a um comportamento inesperado ou a resultados indefinidos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3