Me parece que puede usar CharNextExA para pasar a la siguiente posición del carácter en la secuencia de entrada. En la forma en que puede obtener algunos caracteres y convertirlos allí juntos en la cadena UNICODE con respecto de MultiByteToWideChar. Después de tener el fragmento de texto UNICODE, puede convertirlo en otra página de códigos usando WideCharToMultiByte.
ACTUALIZADO: Estoy seguro de que el proceso de recibir la corriente de los datos de entrada es mucho más lentamente a medida que la decodificación de los datos con respecto a CharNextExA, MultiByteToWideChar y WideCharToMultiByte. Por ejemplo, si usa un búfer en la pila como WCHAR szBuffer[4096]
y TCHAR szDestBuffer[4096]
, podrá decodificar 1K de datos de entrada muy rápidamente. Así que supongo que el tiempo total de funcionamiento de su programa completo estará casi sangrado por el uso de estas tres funciones.
Además, no estoy seguro de que tenga otra alternativa. No conozco ninguna forma confiable de comenzar a decodificar el texto desde el principio hasta el final del texto. Probablemente otras personas tengan otra idea ...
¿Qué página de códigos utiliza? ¿En qué forma recibe los datos? Espero desde el principio hasta el final y no al revés. – Oleg
El código debería funcionar con todas las páginas de códigos admitidas por las plataformas de Windows. Recibo los datos en codificación multibyte o singlebyte y quiero procesarlo internamente en forma amplia, convirtiéndolo a codificación específica del entorno en la salida (después del procesamiento). – Basilevs