Pregunta

Supein, tiene un ejecutable de línea de comando que recibe argumentos. Este Executalbe está listo y desea probar si uno de estos argumentos comienza con un caso de guión en el que es una opción:

comando -o foo

¿Cómo podría probarlo dentro de su código si no conoce el charset ha sido utilizado por el host? ¿No debería ser posible para una consola determinada producir la misma representación de guión por otra característica en el bosque de Widechar? (En tal caso sería un carbón salvaje: P)

int _tmain(int argc, _TCHAR* argv[])
{
   std::wstring inputFile(argv[1]);
   if(inputFile->c_str() <is an HYPHEN>)
   {
      _tprintf(_T("First argument cannot be an option"));
   }
}
¿Fue útil?

Solución

En su caso, Windows entregará la línea de comando como una cadena UTF-16, por lo que no debe preocuparse por los conjuntos de caracteres. Sólo revisa (inputFile->c_str()[0] == L'-') Y deberías estar listo para ir. Por supuesto, UTF-16 es una codificación de longitud variable, pero el carácter de guión está representado por un solo valor de gran cargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top