-
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.