Tecnología

Inicio

Cómo convertir una cadena en C ++ LStrHandle

LabVIEW, por National Instruments, es un programa versátil y flexible que se puede utilizar para manipular y presentar los resultados de los experimentos científicos. Esta versatilidad viene de la API ofrecida con el software LabVIEW que permite a un programador para extender la funcionalidad ofrecida por la aplicación. Al pasar los datos a LabVIEW utilizando la API proporcionada es compleja hasta que aprenda los pasos apropiados requeridos, pero el código para pasar los datos es fácil de reutilizar.

Instrucciones

1 Incluir el encabezado extcode de la API de LabVIEW. Este contiene funcionalidad vital necesaria para la conversión de cadenas. También incluya el encabezado de C ++ cadena de la biblioteca estándar, que contiene la información necesaria para trabajar con cadenas de C ++:

incluir <cadena> incluir "extcode.h"

2 Declarar el prototipo para su función de conversión. Pasar el LStrHandle a ser convertido por referencia, para permitir la devolución de un código de error aplicable:

MgErr StringToLStrHandle (std :: string strToConvert, LStrHandle y strResult);

3 Utilice la función "DSSetHandleSize" para cambiar el tamaño de la variable LStrHandle pasado a la función. La variable LStrHandle necesita ser lo suficientemente grande como para contener tanto la cadena de resultado y un entero que representa el tamaño de la cadena:

// Declarar una variable de error de remisión

MgErr de errCode;

// Cambiar el tamaño del LStrHandle

de errCode = DSSetHandleSize (strResult, sizeof (char) * strToConvert.length () + 4);

4 Copia el tamaño de la cadena origen en la variable LStrHandle modificando el miembro de "CNT" de la estructura LStrHandle:

(* StrResult) -> cnt = strToConvert.length ();

5 Utilice la función "MoveBlock" para copiar los datos de la cadena de cadena de C ++ en la variable LStrHandle. Después de esto se ha completado, el retorno de los errores encontrados al usuario:

// Llenar la LStrHandle con los datos de cadena.

MoveBlock (& (strToConvert.c_str ()), (strResult) -> str, (strResult) -> CNT);

// Devuelve el código de error para el usuario, en su caso

regresar de errCode;

Consejos y advertencias

  • encapsulación adecuada hace este código extremadamente reutilizable. Trate de poner en un operador istream en una clase envolviendo el LStrHandle para hacer el código más legible y utilizable.
  • Asegúrese de que el objeto LStrHandle pasa a la función anterior se ha inicializado correctamente. El LStrHandle es un objeto de puntero envuelto en una estructura y puede producir excepciones referencia nula si no se maneja adecuadamente.
  • Asegúrese de revisar los códigos de error proporcionados por la función DSSetHandleSize y manejarlos adecuadamente.