no puedo usar str [0] porque, puede tener cadena que tiene caracteres de varios bytes
que no conozco de cualquier aplicación que soporte CRT clasificación de caracteres no ASCII y conversión. Si desea soportar Unicode, todo es mucho más complicado ya que "convertir el primer carácter a mayúscula" puede no tener sentido en otros idiomas. Tienes que usar un Unicode library escrito por expertos para esto.
Para ilustrar lo complicado que es, considere el siguiente caso en Inglés. La conversión de tres secuencia de código 'archivo' (con f-ligadura) deberá romper el primer punto de código en dos letras separadas que dan como resultado 'Archivo'. Tenga en cuenta que las interfaces C/C++ estándar para hacer la clasificación y conversión de casos no toman en cuenta estos casos, por lo que es incluso imposible implementarlos para que sean compatibles con Unicode correctamente.
¿Qué idioma se utiliza? –
https://www.google.com/search?q=Title+case+a+string –
El idioma que estoy usando es C++ – user1065276