Se ho una funzione in cui sto operando su uno specifico offset all'interno di una stringa, e la posizione esatta di questo offset dipende da un test precedente all'interno della funzione, è "cattiva pratica" o "brutta" usare il booleano nell'aritmetica in cui viene calcolato l'offset?
Ecco la mia funzione:
#include <Windows.h>
#include <strsafe.h>
VOID WINAPI TrimQuotes(WCHAR *wStr, INT cchStr, WCHAR *wOut, INT cchOut)
{
WCHAR wStart = wStr[0];
WCHAR wEnd = wStr[cchStr-1];
if(wStart == L'\"')
StringCchCopy(wOut, cchOut, wStr+1);
else
StringCchCopy(wOut, cchOut, wStr);
if(wEnd == L'\"')
wOut[cchStr-(1+(wStart==L'\"'))]=L'#include <Windows.h>
#include <strsafe.h>
VOID WINAPI TrimQuotes(WCHAR *wStr, INT cchStr, WCHAR *wOut, INT cchOut)
{
WCHAR wStart = wStr[0];
WCHAR wEnd = wStr[cchStr-1];
if(wStart == L'\"')
StringCchCopy(wOut, cchOut, wStr+1);
else
StringCchCopy(wOut, cchOut, wStr);
if(wEnd == L'\"')
wOut[cchStr-(1+(wStart==L'\"'))]=L'%pre%';
}
';
}
Come probabilmente hai indovinato dal suo nome, il suo compito è determinare se una stringa è circondata da caratteri a virgolette e, in tal caso, rimuoverli dalla stringa. Se ho rimosso un carattere dalla stringa di origine già nel caso in cui wStart == L'\"'
, quindi l'offset all'interno della stringa di destinazione in cui l'ultimo carattere non nullo è decrementato di uno, quindi la mia soluzione era semplicemente il cast booleano in un numero intero che regolerebbe l'offset da cchStr
se necessario:
Consiglieresti di fare questo?