Pergunta

Eu tenho uma classe que retorna um ponteiro digitado para uma "const tchar". Eu preciso convertê -lo em uma string std ::, mas não encontrei uma maneira de fazer isso acontecer.

Alguém pode fornecer algumas dicas sobre como convertê -lo?

Foi útil?

Solução

Dependendo das suas configurações de compilação, TCHAR é um char ou a WCHAR (ou wchar_t).

Se você estiver usando a configuração de string de caracteres de vários bytes, então seu TCHAR é o mesmo que um char. Então você pode simplesmente definir sua string para o TCHAR* retornou.

Se você estiver usando a configuração da sequência de caracteres unicode, então seu TCHAR é um amplo char e precisa ser convertido usando WidChartomultibyte.

Se você estiver usando o Visual Studio, o que presumo que você seja, poderá alterar essa configuração nas propriedades do projeto no conjunto de caracteres.

Outras dicas

Eu tive uma questão semelhante em uma aprovação de calendário.A solução fácil foi "filtrar" a lista no status de aprovação igual a aprovado.

Você também pode usar as macros úteis de conversão de texto ATL para isso, por exemplo:

std::wstring str = CT2W(_T("A TCHAR string"));

Ct2w = texto const para largo.

Você também pode especificar uma página de código para a conversão, por exemplo

std::wstring str = CT2W(_T("A TCHAR string"), CP_SOMECODEPAGE);

Essas macros (em sua forma atual) estão disponíveis para projetos do Visual Studio C ++ desde o VS2005.

Depende. Se você não definiu _UNICODE ou UNICODE Então você pode fazer uma string contendo o personagem como este:

const TCHAR example = _T('Q');
std::string mystring(1, example);

Se você tem está usando _UNICODE e UNICODE então essa abordagem ainda pode funcionar, mas o personagem pode não ser convertível para um char. Nesse caso, você precisará converter o personagem em uma string. Normalmente você precisa usar uma chamada como wcstombs ou WideCharToMultiByte o que oferece controle mais completo sobre a codificação.

De qualquer maneira, você precisará alocar um buffer para o resultado e construir o std::string A partir desse buffer, lembrando -se de negociar o buffer quando terminar (ou usar algo como vector<char> para que isso aconteça automaticamente).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top