std :: wcout para console janela no xcode [fechado
Pergunta
Em um projeto Xcode, se eu usar std::cout
Para escrever no console, a saída é boa.
No entanto, se eu usar std::wcout
Não recebo saída.
Sei que este é um problema espinhoso no C ++, e estou pesquisando no Google para tentar encontrar uma solução específica no caso Xcode. Algumas coisas que descobri que foram sugeridas que funcionassem foram:
std::cout.imbue( std::locale("") );
e
std::setlocale(LC_ALL, "");
Nenhum deles fez nenhuma diferença. Antes de me resignar a passar as próximas semanas estudando a API de facetas apenas para poder escrever no console, pensei em verificar com a estimada audiência aqui.
Atualizar
Eu acho que o motivo do problema que tenho tido é realmente a ver com a codificação específica de algumas das cordas que estou tentando imprimir.
Se eu enviar apenas uma string literal, usando o L"my string" syntax
funciona! Parece que isso está usando UTF32 - Little Endian Encoding.
No entanto, eu tenho misturado isso com strings que passei do código C ++ objetivo usando a codificação NSUTF32BigEndiaStringEncoding. É essa mistura de codificações que está causando os problemas.
Acho que podemos considerar esse assunto fechado. Obrigado pela leitura.
Solução
std :: wcout deve funcionar exatamente como std :: cout.
O seguinte funciona bem no meu Mac:
#include <iostream>
int main()
{
std::cout << "HI" << std::endl;
std::wcout << L"PLOP" << std::endl;
}
Talvez (embora algum código tenha sido bom) é porque você não está descarregando o buffer. Lembre -se de que std :: cout e std :: wcout são buffers. Isso significa que a saída não será empurrada para o console até que o buffer seja preenchido ou você lavar explicitamente o buffer.
Você pode liberar o buffer com:
std::wcout << flush();
// or
std::wcout << endl; // Those also puts a '\n' on the stream.