"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que você deve evitar misturar cout e wcout no mesmo programa C++?

Por que você deve evitar misturar cout e wcout no mesmo programa C++?

Publicado em 23/12/2024
Navegar:345

Why Should You Avoid Mixing cout and wcout in the Same C   Program?

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.

Tutorial mais recente Mais>

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