Come convertire una stringa C ++ per LStrHandle

September 10

LabVIEW, National Instruments, è un programma versatile e flessibile che può essere usato per manipolare e presentare i risultati degli esperimenti scientifici. Questa versatilità deriva dalla API offerto con il software LabVIEW che permette ai programmatori di estendere le funzionalità offerte dall'applicazione. Passando i dati di LabVIEW utilizzando le API fornite è complessa fino a quando si impara la procedura corretta richiesti, ma il codice per passare i dati è facile da riutilizzare.

istruzione

1 Includere l'intestazione extcode dalle API LabVIEW. Questo contiene funzionalità vitale necessario per la conversione di stringhe. Includere anche il C ++ intestazione stringa di libreria standard, che contiene le informazioni necessarie per lavorare con le stringhe C ++:

includere <string> includere "extcode.h"

2 Dichiarare il prototipo per la funzione di conversione. Passare il LStrHandle da convertire facendo riferimento, per consentire il ritorno di un codice di errore applicabile:

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

3 Utilizzare la funzione "DSSetHandleSize" per ridimensionare la variabile LStrHandle passata nella funzione. La variabile LStrHandle deve essere abbastanza grande da contenere sia la stringa risultato e un intero che rappresenta la dimensione di tale stringa:

// Dichiarare una variabile di errore di riferimento

MgErr errCode;

// Ridimensiona il LStrHandle

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

4 Copiare la dimensione della stringa origine nella variabile LStrHandle modificando il membro "cnt" della struttura LStrHandle:

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

5 Utilizzare la funzione "MoveBlock" per copiare i dati di stringa dalla stringa di C ++ nella variabile LStrHandle. Dopo che questo è completo, riportare eventuali errori riscontrati per l'utente:

// Popolare il LStrHandle con i dati di stringa.

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

// Restituisce il codice di errore per l'utente, se applicabile

tornare errCode;

Consigli e avvertenze

  • La corretta incapsulamento rende questo codice estremamente riutilizzabile. Prova a mettere in un operatore istream in una classe avvolgendo il LStrHandle per rendere il codice più leggibile e fruibile.
  • Assicurarsi che l'oggetto LStrHandle passato alla funzione di cui sopra è stato correttamente inizializzato. Il LStrHandle è un oggetto puntatore avvolto in una struttura e in grado di produrre eccezioni riferimento null se non gestita correttamente.
  • Assicurati di controllare eventuali codici di errore forniti dalla funzione DSSetHandleSize e gestirli in modo appropriato.