O que é a maneira mais simples de carvão animal convertido [] para / de TCHAR [] em C / C ++ (ms)?
Pergunta
Esta parece ser uma pergunta muito softball, mas eu sempre tenho dificuldade em olhar-se esta função, porque não parecem existem tantas variações em relação à referência de caractere e TCHAR.
Solução
MultiByteToWideChar mas também ver "alguns dos truques de MultiByteToWideChar" .
Outras dicas
TCHAR é um typedef específico da Microsoft para qualquer caractere ou wchar_t (uma grande personagem).
A conversão para carvão depende de qual delas é realmente. Se TCHAR é realmente um char, então você pode fazer um molde simples, mas se ele é realmente um wchar_t, você vai precisar de uma rotina para converter entre conjuntos de caracteres. Veja a função MultiByteToWideChar ()
Existem algumas respostas neste post, bem como, especialmente se você está procurando uma solução multi-plataforma:
Embora nesta situação particular, eu acho que o TCHAR é uma grande personagem que eu só precisa fazer a conversão se não é. que eu tenho que verificar alguma forma.
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
A coisa legal sobre isso é ambos os tamanhos dos iguais são constantes, o que significa que o compilador irá lidar com (e remover) as if (), e se eles são iguais, remover tudo dentro das chaves
Aqui está o código CPP que as duplicatas _TCHAR * argv [] para char * argn [].
Se você adotar código antigo para o Windows, uso simples definem mencionado no código como opcional.
Você pode colocar condição em seu código
ifdef _UNICODE
{// gosto TCHAR é char WIDE} else {// gosto TCHAR é char}
Sei que esta é uma discussão antiga, mas não conseguiu me a resposta "certa", por isso estou adicionando-o agora.
A forma como este parece ser feito agora é usar a macro TEXT. O exemplo para FindFirstFile no MSDN aponta isso. http://msdn.microsoft .com / en-us / library / janelas / desktop / aa364418% 28v = VS.85% 29.aspx